技术学习博8

第十五周学的是排序,主要是排序的基本概念、插入和交换类排序

补一下上周查找的代码,折半查找

 1 int BinSrch(RecordList* l, KeyType k)
 2 /*在有序表L中折半charu其关键字等于k的元素,
 3    若找到,则函数值为该元素在表中的位置*/
 4 {
 5     int  low, high, mid;
 6     int i;
 7     low = 1;   //low表示查找范围的起始处
 8     high = l->length;   //high表示查找范围的终止处
 9     if (l->length >= LIST_SIZE)
10     {
11         printf("It is full.
");
12         return 0;
13     }
14     while (low <= high)
15     {
16         mid = (low + high) / 2;   //计算中点
17         if (k == l->r[mid].key)
18         {
19             printf("exist
");
20             return 0;
21         }
22         else  if (k < l->r[mid].key)
23             high = mid - 1;     /*继续在前半区间进行cha ru*/
24         else
25             low = mid + 1;      /*继续在后半区间进行cha ru */
26     }
27     //找到插入的位置
28     for (i = l->length; i >= low; i--)//元素后移
29         l->r[i + 1].key = l->r[i].key;
30     l->r[low].key = k;//元素插入
31     l->length++;
32     return 1;
33 }
原文地址:https://www.cnblogs.com/hhw-/p/13124614.html