二分法_JavaScript版

/**
 * 使用二分法时,首要条件是数组本身是排序的.
 */
function binarySearch(arr, value){
    var startIndex = 0,
        endIndex = arr.length - 1,
        middleIndex = Math.floor((endIndex+startIndex)/2);

    while(arr[middleIndex]!= value && startIndex < endIndex){
        if(value < arr[middleIndex]) endIndex = middleIndex - 1;
        else if(value > arr[middleIndex]) startIndex = middleIndex + 1;
        middleIndex = Math.floor((endIndex+startIndex)/2);
    }

     return arr[middleIndex] != value ? -1 : middleIndex;

}

你可能感兴趣的:(JavaScript)