码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript实现二分查找

时间:2016-04-23 11:39:20      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

思路:找到数组中间数,和你要找的数进行比较,如果midVal>findVal则说明要查找的数在数组的左半部分,就把该数组二分,只从左边找(递归)


var arr=[1,4,6,8,12,45];
function binarySearch(arr,findVal,leftIndex,rightIndex){

  //防止无穷递归
  if(leftIndex>rightIndex){
    document.writeln("找不到");
    return;
  }

  //找到中间这个值
 // var midVal=arr[Math.floor((leftIndex+rightIndex)/2)];//用于下取整
 var midIndex=Math.floor((leftIndex+rightIndex)/2);
 var midVal=arr[midIndex];
  //比较
  if(midVal>findVal){
    //在左边找
    binarySearch(arr,findVal,leftIndex,midIndex-1);//递归查找
  }else if(midVal<findVal){
    //在右面找
    binarySearch(arr,findVal,midIndex+1,rightIndex);
  }else{
    document.writeln("找到下标为"+midIndex);
    return;
  }

}

//测试,调用函数
binarySearch(arr,8,0,arr.length-1);

JavaScript实现二分查找

标签:

原文地址:http://www.cnblogs.com/haimengqingyuan/p/5424150.html

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