JavaScript 二分查找

function binarySearch (num, arr) {
    var left, right, mid;
    left = 0;
    right = arr.length -1;
    while(left <= right) {
        // 由于Js中,除法运算会自动转换为浮点数,需要将mid作取整处理
        mid = parseInt((left + right) / 2);
        if (num < arr[mid]) {right = mid -1}
        else if (num > arr[mid]) {left = mid+1}
        else {return mid}
    }
    return false;
}

每次移动left和right指针的时候,需要在mid的基础上+1或者-1, 防止出现死循环, 程序也就能够正确的运行。

代码中的判断条件必须是while (left <= right),否则的话判断条件不完整

扩展 二分查找(面试必备)

发表评论