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);
//前提:数组是有序的,如果不是有序的,则不能使用二分查找
//思路:找到数组的中间数(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的Web API : 原生js操控显式HTML元素
- js桌面消息提示和title提醒
- 如何用拼接的字符串调用javascript的变量或方法
- JSON.parse()和JSON.stringify()
- JavaScript冒泡排序算法
- THREE.js-几何体(Geometry)
- JavaScript二维数组转置算法
- 第一个three.js程序
- phantomjs#2文件模块
- JSON 代码,解释,转换
- js调用高德API获取所在当前城市
- JS身份证真实性校验(二)
- js上一个下一个左右滚动实现
- js解析json类型字符串的函数
- js编写当天简单日历效果【实现代码】
- js封装Jqery的ready事件
- js-style,currentStyle与getComputedStyle()
- 用于验证javascript代码性能的两种使用的方法
- JavaScript中cookie使用
- web前端面试题及答案 JavaScript篇