您的位置:首页 > Web前端 > JavaScript

JavaScript二分查找排序算法

2016-05-03 18:15 435 查看
//二分查找

//前提:数组是有序的,如果不是有序的,则不能使用二分查找

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

var arr=[1,3,4,6,7,9];

function binarySearch(arr,findVal,leftIndex,rightIndex){

//防止无穷递归

if (leftIndex>rightIndex) {

//提示找不到

window.alert('找不到');

return ;

}

//找到中间的值

var midIndex=Math.floor((leftIndex+rightIndex)/2);

var midVal=arr[midIndex];

//比较

if (midVal>findVal) {

//在左边找

binarySearch(arr,findVal,leftIndex,rightIndex-1);

}else if (midVal<findVal) {

//在右边找

binarySearch(arr,findVal,leftIndex+1,rightIndex);

}else{

window.alert('找到下标为:'+midIndex);

return ;

}

}

//测试

binarySearch(arr,9,0,arr.length-1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: