前端开发--搜索算法

顺序搜索

顺序或是线性搜索都是最基本的搜索算法,它的机制是,将每一个数据结构中的元素和我们要找的元素做一个比较,搜索算法是效率最低的一种搜索算法。

arr = [5,4,3,2,1];
let  sequentialSearch = function (item,arr){
  for(let i = 0; i < arr.length; i++){
    if(item === arr[i]){
        return i;
    }
  }
  return -1;
}
let res = sequentialSearch(3,arr);
console.log(res);

上面的算法中如果找到了搜索项,就会返回搜索项的下标,如果没有找到该项,就会返回-1,表示索引不存在,当然也可以考虑返回null或是false。

顺序查找的示意图

二分搜索

二分搜索的做法的原理有一点类似于猜数字的游戏,就是有一个人说:我想到了一个1到100中的数字,我们没回应一个数字,那个人就会回应说这个数字是高了、低了、还是对了。
这个算法有一个要求,就是这个被搜索的数据结构已经排序了,下面是这个算法需要遵循的步骤:
(1)选择数组的中间值
(2)如果选中值是待搜索值,那么算法就执行完毕了(值找到了)。
(3)如果待搜索值比选中值小,就返回步骤1并在选中值左边的子数组中查找。
(4)如果待搜索值比选中值大,就返回步骤1并在选中值右边的子数组中查找。

let arr2 = [10,9,8,7,6,5,4,3,2,1];
let binarySearch = function (item,arr){
    let low = 0;
    high = arr2.length - 1;
    let middle,curElement;
    while(low <= high){
        middle = Math.floor((low+high)/2);
        curElement = arr2[middle];
        if(curElement < item){
            low = middle + 1;
        }else if(curElement > item){
            high = middle -1;
        }else{
            return middle
        }
    }
    return -1;
};
let res = sequentialSearch(2,arr2);
console.log(res);
二分查找的示意图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从事房地产行业的室内设计管理十余年,依然对设计和艺术,有浓厚的兴趣。多年的设计管理和实践经验,略有些心得,发现设计...
    海上neal阅读 597评论 0 0
  • 你是我夜空中 最亮的那一颗星星 只是现在 我要把你屏蔽 因为你 昏花了我的眼 扰乱了我的心 你是来自星辰的光芒 我...
    独木前行阅读 156评论 0 1
  • 普宁,我来了!一时兴起,也不算一时兴起吧,因为来之前还在想着来普宁还是揭阳,只是揭阳没有直达(正好,系统帮我...
    上官默言阅读 121评论 0 0