#include <stdio.h>
#define N 10
//折半查找,适用于有序序列(本例递增)
//便捷输入 0 1 2 23 45 46 87 98 121 634
int main(){
int a[N], key, lower, upper;
for (int i = 0; i < N; i++)
scanf ("%d", &a[i]);
scanf ("%d", &key);
lower = 0;
upper = N - 1;
while (a[(upper + lower)/2] != key && lower <= upper){
if (a[(upper + lower)/2] > key)
upper = (upper + lower)/2 - 1;
else if (a[(upper + lower)/2] < key)
lower = (upper + lower)/2 + 1;
}
if (lower > upper)
printf("Fail to find!\n");
else
printf("%d\n", (upper + lower)/2);
return 0;
}
查找(二) 折半查找
![](https://img-home.csdnimg.cn/images/20240711042549.png)