#includeint main() { int key, pos, a[100], n, i; // a[]顺序表 int Search_Ein(int s[], int n, int key); //折半查找函数声明 printf("请输入数组元素个数:"); scanf("%d", &n); //表长 printf("请输入(从小到大)所有数组元素:n"); //有序 for (i = 0; i < n; i++) { scanf("%d", &a[i]); } printf("请输入关键字:"); scanf("%d", &key); pos = Search_Ein(a, n, key); if (pos >= 0) printf("查找成功!在第%d位!n", pos + 1); else printf("查找失败!n"); return 0; } int Search_Ein(int s[], int n, int key) { int low, high, mid; low = 1; high = n; //置区间初值 while (low <= high) { mid = (low + high) / 2; //计算中间元素序号 if (s[mid] == key) //找到待查元素 return mid; else if (s[mid] > key) //中间元素大于关键字 high = mid - 1; else low = mid + 1; } return -1; //查找失败返回-1 }



