int BinarySearch(int a[], const int& x, int n) {
int left = 0;
int right = n - 1;
while (left <= right) {//注意是小于等于
int mid = (left + right) / 2;
if (a[mid] < x) {//比查找元素小,查找元素在右区间
left = mid + 1;
}
if (a[mid] > x) {
right = mid - 1;//比查找元素大,查找元素在左区间
}
if (a[mid] == x) {
return mid;
}
}
return -1;
}
二分查找时间复杂度:O(log2n)
二叉搜索树时间复杂度: O(log2n)到O(n),最好情况平衡树,最坏情况单枝树。