码迷,mamicode.com
首页 > 其他好文 > 详细

二分查找

时间:2018-01-15 13:38:29      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:style   undefined   二分查找   font   size   fine   har   tar   prot   

 一、四个参数全写版

var searchArr = new Array(1,2,3,4,5,6,7,8,9);
//二分查找 找准四个参数 arr---指定的函数  num---查找的数 leftArr---开始的索引 rightArr结束的索引
//Array.prototype是给数组原型链添加方法
Array.prototype.LV_erfen = function LV_erfen(arr,num,leftArr,rightArr){
     //分隔两边的数组序号
     var Center = Math.floor( (leftArr+rightArr)/2 );
     //该序号对应的数组数值
     var arrCenter = arr[Center];
     //防止无限循环
     if( leftArr>rightArr){
         console.log("你好!该数组中没有你想要的值");
         return;
     }
     //根据 分隔序号 对应的 数组值 与 查找数 的比较 决定从哪个方向查找
     if( arrCenter
          //从右边找
          LV_erfen(arr,num,Center+1,rightArr);
     }else if( arrCenter>num ){
          //从左边找
          LV_erfen(arr,num,leftArr,Center-1);
     }else{
          console.log( "数字"+6+"在数组的序号是"+Center );
     }
}
//返回  返回出来的是undefined 原因未知(待改)
console.log( "数字"+6+"在数组的序号是"+searchArr.LV_erfen(searchArr,10,0,searchArr.length-1) );

   二、只写两个参数

Array.prototype.LV_erfen = function LV_erfen(arr,num,leftArr,rightArr){
       leftArr = leftArr||0;
       rightArr = 0?rightArr=0:rightArr=rightArr;
       rightArr = undefined?arr.length-1:false;
       var Center = Math.floor( (leftArr+rightArr)/2 );
       var arrCenter = arr[Center];
       if( leftArr>rightArr){
            console.log("你好!该数组中没有你想要的值");
            return;
       }
       if( arrCenter
            //从右边找
            LV_erfen(arr,num,Center+1,rightArr);
       }else if( arrCenter>num ){
           //从左边找
           LV_erfen(arr,num,leftArr,Center-1);
       }else{
           console.log( "数字"+6+"在数组的序号是"+Center );
       }
}
//两个参数
console.log( "数字"+6+"在数组的序号是"+searchArr.LV_erfen( searchArr,10 );

 

二分查找

标签:style   undefined   二分查找   font   size   fine   har   tar   prot   

原文地址:https://www.cnblogs.com/wssjzw/p/8287543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!