[C语言]写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回 - 1.(折半查找)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h>
int main(){
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int toFind = 2;
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]);
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] < toFind) {
left = mid + 1;
} else if (arr[mid] > toFind) {
right = mid - 1;
} else {
printf("找到了!下标是:%d\n", mid);
break;
}
}
if (left > right) {
printf("没找到!\n");
}
system("pause");
return 0;
}
这里以有序数组1到9来举例,找数字2的下标,下标应为1,输出结果: