算法系列:5. 二分搜索

/**
 * @Desc 二分搜索
 * 二分搜索 前提是 有序数组
 * 从数组中间值开始,如果中间值正好等于搜索值,结束搜索;
 * 如果搜索值比 中间值大或小,则在大于或小于中间值的那一半数组中继续搜索
 */
Array.prototype.binarySort = function (selector) {
    
    
    let low = 0;
    let high = this.length - 1;

    while(low <= high) {
    
    
        let midIndex = Math.floor((low + high) / 2);
        let mid = this[midIndex];

        if (selector < mid) {
    
    
            high = midIndex - 1;
        } else if (selector > mid) {
    
    
            low = midIndex + 1;
        } else {
    
    
            return midIndex;
        }
    }

    return -1;
}

猜你喜欢

转载自blog.csdn.net/RedaTao/article/details/120534643