JavaScript使用二分查找算法在数组中查找数据的方法


Posted in Javascript onApril 07, 2015

本文实例讲述了JavaScript使用二分查找算法在数组中查找数据的方法。分享给大家供大家参考。具体分析如下:

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

var Arr = [3,5,6,7,9,12,15];
function binary(find,arr,low,high){
if(low <= high){
if(arr[low] == find)
return low;
if(arr[high] == find)
return high;
var mid = Math.ceil((high + low)/2);
if(arr[mid] == find){
return mid;
}else if(arr[mid] > find){
return binary(find,arr,low,mid-1);
}else{
return binary(find,arr,mid+1,high);
}
}
return -1;
}
binary(15,Arr,0,Arr.length-1);

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
初窥JQuery(二)事件机制(2)
Dec 06 Javascript
JS自动缩小超出大小的图片
Oct 12 Javascript
jQuery让控件左右移动的三种实现方法
Sep 08 Javascript
jQuery表单对象属性过滤选择器实例详解
Sep 13 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
Jan 20 Javascript
微信小程序支付前端源码
Aug 29 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
Aug 29 Javascript
如何为vuex实现带参数的 getter和state.commit
Jan 04 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
Nuxt配置Element-UI按需引入的操作方法
Jul 06 Javascript
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
JavaScript给按钮绑定点击事件(onclick)的方法
Apr 07 #Javascript
JS 作用域与作用域链详解
Apr 07 #Javascript
JavaScript实现在页面间传值的方法
Apr 07 #Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 #Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 #Javascript
TypeScript具有的几个不同特质
Apr 07 #Javascript
实现前后端数据交互方法汇总
Apr 07 #Javascript
You might like
php设计模式 Builder(建造者模式)
2011/06/26 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
PHP时间处理类操作示例
2018/09/05 PHP
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
对Python 内建函数和保留字详解
2018/10/15 Python
基于python实现高速视频传输程序
2019/05/05 Python
numpy.random模块用法总结
2019/05/27 Python
python 等差数列末项计算方式
2020/05/03 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
入股协议书
2014/04/14 职场文书
作文评语集锦
2014/12/25 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL