#include <iostream>
using namespace std;
int binarySearch(int a[], int n, int key) {
int l = 0, r = n - 1;
while (l <= r) {
int mid = (l + r) / 2;
if (a[mid] == key) return mid;
else if (a[mid] < key) ① ;
else ② ;
}
return -1;
}
- ① ________________________ ② ________________________
答案解析
① 当 a[mid] < key,目标在右半,令 l = mid + 1;② 当 a[mid] > key,目标在左半,令 r = mid - 1。用 mid+1/mid-1 避免死循环。