[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:

这里写图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值