//二分查找
//前提:数组是有序的,如果不是有序的,则不能使用二分查找
//思路:找到数组的中间数(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);
JavaScript二分查找排序算法
原文作者:查找算法
原文地址: https://blog.csdn.net/huahongcui/article/details/51306702
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/huahongcui/article/details/51306702
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。