搜索算法在平时的编程中很常见,比如我们要在电话薄中查找对手机号,在学生列表中查找某个学生等等,都将用到到搜索算法,比较常见的搜索算法有顺序搜索、二分搜索、深度优先搜索、广度优先搜索等。下面将对各种搜索算法的学习进行总结:
顺序搜索
顺序搜索是最简单的一种搜索算法,同时效率也是最慢的,就是遍历数组,一个一个进行对比,具体实现代码如下所示:
/*
* 顺序搜索
* */
this.sequentialSearch = function (array,item) {
if(array){
for(var i = 0;i<array.length;i++){
if(item === array[i]){
return i;
}
}
}
return -1;
}
二分搜索
二分搜索也用的比较多,就是先将数组进行排序,然后再进行搜索,搜索过程如下所示:
(1) 选择数组的中间值。
(2) 如果选中值是待搜索值,那么算法执行完毕(值找到了)。
(3) 如果待搜索值比选中值要小,则返回步骤1并在选中值左边的子数组中寻找。
(4) 如果待搜索值比选中值要大,则返回步骤1并在选种值右边的子数组中寻找。
/*
* 二分搜索
* */
this.binarySearch = function (array,item) {
if(array){
array = array.sort();
var start = 0,
end = array.length - 1,
mid,
element;
while (start <=end){
mid = Math.floor((start + end) / 2);
element = array[mid];
if(item === element){
return mid
}else if(item < element){
end = mid - 1;
}else{
start = mid + 1;
}
}
}
return -1;
}
深度优先搜索与广度优先搜索可查看图的遍历。
https://www.jianshu.com/p/9d356acb6e45
网友评论