搜索算法
搜索算法,在我们日常写代码上,搜索是一个既熟悉又陌生的一种算法。用的很多,但认真了解却不太深刻。来介绍一下最常用搜索算法:顺序搜索和二分搜索。
顺序排序
顺序或线性搜索是最基本的搜索算法。它的机制是,将每一个数据结构中的元素和我们要找的元素做比较。顺序搜索是最低效的一种搜索算法。
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;
}
步骤如下图: