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的滚动新闻列表
Jun 19 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
Jul 23 Javascript
修改file按钮的默认样式实现代码
Apr 23 Javascript
JS实现判断碰撞的方法
Feb 11 Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
Mar 09 Javascript
jquery插件开发之选项卡制作详解
Aug 30 jQuery
纯JavaScript实现实时反馈系统时间
Oct 26 Javascript
select获取下拉框的值 下拉框默认选中方法
Feb 28 Javascript
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
Iview Table组件中各种组件扩展的使用
Oct 20 Javascript
vue中template的三种写法示例
Oct 21 Javascript
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学习之流程控制实现代码
2011/06/09 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
项目管理计划书
2014/01/09 职场文书
个人自我评价范文
2014/02/05 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
党支部工作总结2015
2015/04/01 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
vue中 this.$set的使用详解
2021/11/17 Vue.js