代码如下:
#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
二分查找的数组需要是排好序的。