二分查找

二分查找需要数组是有序的,1、先从有序数组的最中间元素开始查找,如果和要查找的元素相等,直接返回索引,若不相等则下一步。2、如果指定的元素大于或者小于中间元素,则在大于或小于的那一半区域内查找,重复第一步直到找到目标元素

function myIndexOf(key) {
    var start = 0;
    var end = this.length - 1;
    var m = 0;
    while (start <= end) {
        m = Math.ceil((start + end) / 2);
        if (key == arr[m]) {
            return m;
        }
        else if (key < arr[m]) {
            end = m - 1;
        } else if (key > arr[m]) {
            start = m + 1;
        }
    }
    return -1;
}
Array.prototype.myIndexOf = myIndexOf
var arr = [1, 2, 3, 4, 5];
console.log(arr.myIndexOf(3));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。