JavaScript数据结构:二分查找
function binarySearch(items, item) {
//二分查找要求数组是有序的
items.sort();
var low = 0,
high = items.length - 1,
mid, elem;
while(low <= high) {
mid = Math.floor((low+high)/2);
elem = items[mid];
if(elem < item) {
low = mid + 1;
}else if(elem > item) {
high = mid - 1;
}else {
return mid;
}
}
return -1;
}
//测试
var arr = [2,3,1,4];
console.log(binarySearch(arr, 3)) // 2
console.log(binarySearch(arr, 5)) // -1