JavaScript二分查找排序算法

来源:互联网 发布:汽车app软件下载 编辑:程序博客网 时间:2024/04/27 09:10
//二分查找
//前提:数组是有序的,如果不是有序的,则不能使用二分查找
//思路:找到数组的中间数(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);
0 0
原创粉丝点击