int binary_search(int * arr, int n, int key) { int low = 0; int high = n - 1; int mid; while (low <= high) { //注意这里是“<=” if (arr[low] == key) { return low; } if (arr[high] == key) { return high; } mid = (low + high) / 2; if (arr[mid] == key) { return mid; } if (arr[mid] < key) { low = mid + 1; //注意这里不是low = mid } else { high = mid - 1; //主义这里不是high = mid } } return -1; }
先记住一种,后续还会更新。