#include <stdio.h>
// 折半查找
int bisearch(int arr[], int l, int r, int k) {
while (l <= r) {
int m = l + (r - l) / 2;
if (arr[m] == k) {
return m; // 找到key则返回索引
} else if (arr[m] < k) { //若中值小于key则在左半区
r = m - 1;
} else { //若中值大于key则在右半区
l = m + 1;
}
}
return -1; // 查找失败
}
int main() {
int arr[] = {85, 63, 52, 34, 25, 17, 6}; // 有序测试序列
int len = sizeof(arr)/sizeof(arr[0]); // 元素数量
int key = 6; // 查找元素
//调用折半查找
int result = bisearch(arr, 0, len-1, key);
if (result != -1)
printf("元素%d的下标索引为:%d.\n", key, result);
else
printf("元素%d不在数组内.\n", key);
return 0;
}