js实现二分查找

  二分查找需要数组是有序的,1、先从有序数组的最中间元素开始查找,如果和要查找的元素相等,直接返回索引,若不相等则下一步。2、如果指定的元素大于或者小于中间元素,则在大于或小于的那一半区域内查找,重复第一步直到找到目标元素。
不使用递归:
 1 function search(arr,key) {
 2     var low=0;
 3     var height=arr.length-1;
 4     var mid;
 5     while(low<=height){
 6         mid=Math.floor((low+height)/2); 
 7         if(arr[mid]==key){                
 8             return mid;
 9         }else if(arr[mid]<key){     
10             low=mid+1;            
11         }else{
12             height=mid-1;
13         }
14     }
15     return -1;
16 }
使用递归:
 1 function search(arr,low,height,key){
 2     height--;
 3     if(low>height){
 4         return -1;
 5     }
 6     var mid=Math.floor((low+height)/2);
 7     if(arr[mid]==key){
 8         return mid;
 9     }else if(arr[mid]<key){
10         low=mid+1
11         return search(arr,low,height,key);
12     }else{
13         mid=height-1;
14         return search(arr,low,height,key);
15     }
16 }

原文地址:https://www.cnblogs.com/aizz/p/9348591.html