搜索算法
搜索算法,在我们日常写代码上,搜索是一个既熟悉又陌生的一种算法。用的很多,但认真了解却不太深刻。来介绍一下最常用搜索算法:顺序搜索和二分搜索。
顺序排序
顺序或线性搜索是最基本的搜索算法。它的机制是,将每一个数据结构中的元素和我们要找的元素做比较。顺序搜索是最低效的一种搜索算法。
function(item){
for(var i=0;i<array.length;i++){
if(item === array[i]){
return i;
}
}
return -1;
}
步骤如下图:
二分搜索
二分搜索算法的原理和猜数字游戏类似,就是那个又人说“我正想着一个1到100的数字”的游戏。我们每回应一个数字,那个人就会说这个数字是高了、低了还是对了。
var array = [8,7,6,5,4,3,2,1];
function(item){
var low = 0,
high = array -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;
}
步骤如下图: