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;
}

先记住一种,后续还会更新。

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!