编辑代码

#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;
}