Fork me on GitHub

二分搜索

需求

需要被搜索的数据结构进行过排序

步骤

选择数组的中间值

如果选中值是待搜索值,那么算法执行完毕(值找到了)

如果待搜索值比选中值要小,则返回步骤一并在选中值左边的子数组中寻找

如果待搜索值比选中值要大,则返回步骤一并在选中值右边的子数组中寻找。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function binarySearch(item){
this.quickSort();//首先需要进行排序,这里选择了快速排序

var low = 0,
high =array.length - 1;
mid,element;
while (low <= high){
mid = Math.floor(low + high)/2;
element = array(mid);
if(element < item){
low = mid + 1;
}else if (element > item){
high = mid -1;
}else {
return mid;
}
}
return -1;
}
显示 Gitment 评论