diff --git "a/2101040022/chapter_9/\345\256\236\347\216\260\346\212\230\345\215\212\346\237\245\346\211\276\347\232\204\347\256\227\346\263\225.cpp" "b/2101040022/chapter_9/\345\256\236\347\216\260\346\212\230\345\215\212\346\237\245\346\211\276\347\232\204\347\256\227\346\263\225.cpp" new file mode 100644 index 0000000000000000000000000000000000000000..30c108deec1467277ea0dc1fd1f3377874b1bde4 --- /dev/null +++ "b/2101040022/chapter_9/\345\256\236\347\216\260\346\212\230\345\215\212\346\237\245\346\211\276\347\232\204\347\256\227\346\263\225.cpp" @@ -0,0 +1,43 @@ +#include +#define MAXL 100 //定义表中最多记录个数 +typedef int KeyType; +typedef char InfoType[10]; +typedef struct +{ + KeyType key; //KeyType为关键字的数据类型 + InfoType data; //其他数据 +} NodeType; +typedef NodeType SeqList[MAXL]; //顺序表类型 +int BinSearch(SeqList R,int n,KeyType k) //二分查找算法 +{ + int low=0,high=n-1,mid,count=0; + while (low<=high) + { + mid=(low+high)/2; + printf(" 第%d次比较:在[%d,%d]中比较元素R[%d]:%d\n",++count,low,high,mid,R[mid].key); + if (R[mid].key==k) //查找成功返回 + return mid; + if (R[mid].key>k) //继续在R[low..mid-1]中查找 + high=mid-1; + else + low=mid+1; //继续在R[mid+1..high]中查找 + } + return -1; +} +int main() +{ + SeqList R; + KeyType k=9; + int a[]={1,2,3,4,5,6,7,8,9,10},i,n=10; + for (i=0;i