二分查找(BinSearch)的Javascript实现
2024-09-06 12:52:51
二分查找
解析:二分查找,也为折半查找。对于一个从小到大排列的有序数组,首先要找到一个中间值,通过与中间值比较,大的放又,小的放在左边。再在两边中寻找中间值,持续以上操作,直到找到所在位置为止。
1.非递归实现
//对于一个从小到大的有序数列,返回查找值的索引(数组下标)
//二分查找,非递归方法
function BinSearch(arr, item){
var left = 0;
var right = arr.length-1;
while(left<=right){
var mid = Math.floor((left+right)/2);
if(item == arr[mid]){
return mid;
}else if(item > arr[mid]){
left = mid + 1;
}else{
right = mid - 1;
}
}
return false;
}
var arr=[-34, 1, 3, 4, 5, 8, 34, 45, 65, 87];
console.log(BinSearch(arr,5)); //
2.递归实现
//二分查找,递归方法
function BinSearch2(arr,item,left,right){
var left = left || 0;
var right = right || arr.length-1;
var mid = Math.floor((left+right)/2);
if(item == arr[mid]){
return mid;
}else if(item > arr[mid]){
return BinSearch2(arr,item,mid+1,right);
}else{
return BinSearch2(arr,item,left,mid-1);
}
return false;
}
var arr1=[-34, 1, 3, 4, 5, 8, 34, 45, 65, 87];
console.log(BinSearch2(arr1,5)); //
最新文章
- WPF实现物理效果 拉一个小球
- Swift3.0P1 语法指南——控制流
- 关于 客户端发现响应内容类型为“text/html; charset=utf-8”,但应为“text/xml”的解决方法
- du 命令
- UISegmentedControl 分段器加载不同的viewcontroller
- 【转载】 使用Anemometer基于pt-query-digest将MySQL慢查询可视化
- C语言中没有main函数生成可执行程序的几种方法
- 一口一口吃掉Volley(一)
- 【linux之进程管理,系统监控】
- UE4读取本地XML文件
- Android群英传笔记——第一章:Android体系与系统架构
- css postion 属性区别【原】
- Ubuntu18.04更换国内源
- vnc搭建
- Ansible Tower系列 二(安装 Tower)【转】
- Appium 设置手机连接方式
- Java 持久化发展历程
- python-redis列表模式
- 重新学习MySQL数据库3:Mysql存储引擎与数据存储原理
- C#中的异步调用及异步设计模式(三)——基于事件的异步模式
热门文章
- PAT甲级——A1089 Insert or Merge
- 03-python 学习第三天:文件操作
- C++中如何实现像Java中接口功能--C++抽象类(纯虚函数,虚函数)
- Linux设置复制粘帖的快捷方式
- 2019-8-31-C#-已知点和向量,求距离的点
- Leetcode513. Find Bottom Left Tree Value找树左下角的值
- Odoo的权限
- Ionic 发布Release 版本
- Django项目:CMDB(服务器硬件资产自动采集系统)--06--06CMDB测试Linux系统采集硬件数据的命令01
- js 给链接 url或href或js、css、图片等解决浏览器缓存