第十五周学的是排序,主要是排序的基本概念、插入和交换类排序
补一下上周查找的代码,折半查找
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 }