[Javascript Data Structures] 二分查找 Binary Search

二分查找 也稱 折半查找

<script type="text/javascript">
function Binary(array,data){

  this.binarySearch=function(){
     console.log("Ordered List: "+array);
     if (array.length==1) {
         if (array[0]==data) {
            console.log("Have "+data);
         }
     }else if(array.length==0){
            console.log("No data");
     }else{
        binary(array,data);
     }
  }

//主要
  var binary=function(){
  //* 先設置low high點 和mid
      var low=0;
      var high=array.length-1;

      while(low<=high){
          var mid=Math.floor((low+high)/2);
          var element=array[mid];

       // 如果 data大 那麼下次循環找右半圈
          if (element<data) {
            low=mid+1;

       // 如果 data小 那麼下次循環找左半圈
          }else if(element>data){
            high=mid-1;
          }

        // 找到了數   
           else{       
            console.log("array["+mid+"]="+data);
            break;
          }
      }
  }

}

    var array=[41,10,8,2,0,1,50,15,23,11,
    4,9,14,100,40,39,56,34,23,12];
  array=array.sort(function(a,b){
    return a-b;
  });
  var binary=new Binary(array,50);
  binary.binarySearch();

</script>

Test:

這裏寫圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章