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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM