本书当中说了两种搜索算法,篇幅都不大,由于融合了以前的知识点,因此看起来会相对简单一,主要包括两个内容:算法
从字面的意思来看,就是按照顺序一个一个找下去的意思,直到找到为止。搜索的结果能够返回true、当前索引、当前值,不然返回false,-1,null等内容,咱们看以下一段代码:数组
var sequentialSearch = function(item){ for (var i = 0;i<array.length; i++){ if(item === array[i]){ return i; //返回索引 // return true; 返回布尔 // return array[i]; 返回当前值 }else{ return -1; } } }
总体的思路就是遍历数据,而后把遍历到的每项内容,跟咱们要查找的元素相比较,若是值相等就遍历结束,使用 return 返回,不然在遍历结束的时候返回其它内容。
假定有以下数组,咱们要在里面查找值为3的元素项:数据结构
[5,4,3,2,1]
搜索的示意图以下:ui
所谓的二分,就是把数据一分为二,首先选中一个中间值,若是中间值是须要查找的,那么返回该值,不然拿须要查找的值跟这个中间值比较,而后依次循环执行这个步骤,直到找到为止。spa
该搜索算法要求被搜索的数据结构已排序。
代码实现:code
let binarySearch = function(item){ // 由于要求先排序 quickSort(array); let low = 0, hight = 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; }
一下是算法执行的步骤示例图:排序
这里的内容大部分是书中摘抄的内容,中间说到了快速排序,您能够查阅其它的资料去了解下,排序算法相关的内容,JS常见的排序算法主要有,固然咱们这里也能够使用其它排序方法,好比:冒泡排序、选择排序、插入排序、归并排序等。索引