前言
本书当中说了两种搜索算法,篇幅都不大,因为融合了之前的知识点,所以看起来会相对简单一,主要包括两个内容:
- 顺序搜索
- 二分搜索
顺序搜索
从字面的意思来看,就是按照顺序一个一个找下去的意思,直到找到为止。搜索的结果可以返回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]
搜索的示意图如下:
二分搜索
所谓的二分,就是把数据一分为二,首先选中一个中间值,如果中间值是需要查找的,那么返回该值,否则拿需要查找的值跟这个中间值比较,然后依次循环执行这个步骤,直到找到为止。
该搜索算法要求被搜索的数据结构已排序。
- 选择数组的中间值
- 如果中间值是待搜索值,那么算法执行结束
- 如果待搜索的值比中间值小,则返回第一步,在选中值得左边寻找
- 如果待搜索的值比中间值大,则返回第二步,在选中值得右边寻找
代码实现:
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常见的排序算法主要有,当然我们这里也可以使用其它排序方法,比如:冒泡排序、选择排序、插入排序、归并排序等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。