第一次尝试
#include<stdio.h>
int main() {
int arr[] = { 1,2,3,4,5,6,7 };//查找6
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
//printf("%d\n", right);
int toFind = 6;
while(left<=right) {
int mid = (left + right) / 2;
if (arr[mid]>toFind) {
right=mid-1;
}
else if (arr[mid] < toFind) {
left = mid + 1;
}
else {
printf("下标为%d\n", mid);
break;
}
}
if (left > right) {
printf("未找到\n");
}
return 0;
}
实现了二分查找,但仅限于有序数列才有效,因此代码中给定了一组数组,未让用户手动输入。且在进行一次二分查找之后,要注意mid
的加或减,不能搞混了。