c实现二分查找

    xiaoxiao2022-07-07  144

    代码如下:

    #include <stdio.h> int binarySearch(int arr[], int n, int target) { int left, right; left = 0; right = n - 1; while(left <= right) { /* *这里之所以取中间值用left + (right - left) / 2,而不是 *(left + right) / 2,是为了防止整数溢出 */ int mid = left + (right - left) / 2; if(arr[mid] == target) { return mid; } else if(target < arr[mid]) { right = mid - 1; } else { left = mid + 1; } } return -1; } int main(int argc, char *argv[]) { int arr[7] = {1, 3, 4, 5, 6, 8, 9}; int ret = binarySearch(arr, 7, 5); printf("ret = %d\n", ret); return 0; }

    运行结果:ret = 3

    二分查找的数组需要是排好序的。

    最新回复(0)