这种方法适合于从有序数组中找出想要的目标。
代码:
#include<stdio.h>
int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k;
int sz = sizeof(arr) / sizeof(arr[0]);//求有多少个数;
int left=0;//左边第一个的序号
int right= sz - 1;//右边第一个的序号
scanf("%d", &k);//输入目标数字
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] < k) {
left = mid + 1;
}
else if (arr[mid] > k) {
right = mid - 1;
}
else {
printf("找到了,下标是:%d\n", mid);
break;
}
}
if (left > right) {
printf("找不到了\n");
}
return 0;
}