问题遇到的现象和发生背景
C语言
使用二分查找法时发现部分数字无法被找到
用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
int search(int key, int a[], int len);
int main() {
int a[] = { 1,2,3,4,6,8,9,13,46,78,88,99,100 };
int key;
printf("请输入你要搜索的数字:");
scanf_s("%d", &key);
int r = search(key, a, sizeof(a) / sizeof(a[0]));
printf("该数字排在第%d位。", r);
return 0;
}
int search(int key, int a[], int len) {
int left = 0;
int right = len - 1;
int ret = -1;
while(left < right) {
int mid = (left + right) / 2;
if (a[mid] < key) {
left = mid + 1;
}
else if(a[mid]>key) {
right = mid -1;
}
else {
ret = mid;
break;
}
}
return ret;
}
运行结果及报错
输入46和100时输出的结果都为-1