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 相关文章推荐
return false;和e.preventDefault();的区别
Jul 11 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
Mar 01 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 Javascript
javascript 处理null及null值示例
Jun 09 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
Oct 29 Javascript
详解JavaScript基于面向对象之创建对象(1)
Dec 10 Javascript
angularjs之$timeout指令详解
Jun 13 Javascript
Javascript实现购物车功能的详细代码
May 08 Javascript
浅析vue-router原理
Oct 19 Javascript
Vue.set 全局操作简单示例
Sep 19 Javascript
微信小程序webSocket的使用方法
Feb 20 Javascript
ES6中的Javascript解构的实现
Oct 30 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
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
orm获取关联表里的属性值
2016/04/17 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
python中尾递归用法实例详解
2015/04/28 Python
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
六五普法规划实施方案
2014/03/21 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
心理健康教育主题班会
2015/08/13 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python