二分查找需要数组是有序的,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));