JS数组搜索之折半搜索实现方法分析
本文实例讲述了JS数组搜索之折半搜索实现方法。分享给大家供大家参考,具体如下:
一.方法原理:
当从一个给定的序列数组arr中,查找某个特定值value时,折半搜索法是这样做的:
1.确定搜索范围的起始点:起点startIndex=0,终点endIndex=arr.length-1;
2.根据起始点来确定一个中间点middle=Math.floor((终点-起点)/2);
3.在startIndex (1)arr[middle] 调整搜索范围为数组的后半部分,即startIndex=middle+1,endIndex=arr.length-1; (2)arr[middle]>value 调整搜索范围为数组的前半部分,即startIndex=0,endIndex=middle-1; 接着,重新计算middle,再比较arr[middle]与value,直到两者相等或者startIndex>=endIndex. 二.代码: 三.优缺点: (1)优点: 每查找一次,被查找的数组项数量会减少一半,因此其在性能上要优于线性搜索法(在数组项较多时,尤其明显); (2)缺点: 只适用于序列数组,在对普通数组使用该方法之前,需要对数组进行排序 更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript排序算法总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》 希望本文所述对大家JavaScript程序设计有所帮助。
//该例的写法适用于序列为由小到大的数组
functionbinarySearch(arr,value){
varstartIndex=0,
endIndex=arr.length-1;
middle=Math.floor((endIndex-startIndex)/2);
while(arr[middle]!==value&&startIndex