《JavaScript算法》二分查找的思路与代码实现
二分查找的思路
- 首先,从有序数组的中间的元素开始搜索,如果该元素正好是目标元素(即要查找的元素),则搜索过程结束,否则进行下一步。
 - 如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然后重复第一步的操作。
 - 如果某一步数组为空,则表示找不到目标元素
 
代码实现
- 非递归实现
 
// 非递归算法function binary_search(arr, key) {let low = 0;let high = arr.length - 1;while(low <= high){let mid = parseInt((high + low) / 2);if(key === arr[mid]){return mid;}else if(key > arr[mid]){low = mid + 1;}else if(key < arr[mid]){high = mid -1;}else{return -1;}}}
- 递归实现
 
// 递归算法function binary_search(arr,low, high, key) {if (low > high){return -1;}let mid = parseInt((high + low) / 2);if(arr[mid] === key){return mid;}else if (arr[mid] > key){high = mid - 1;return binary_search(arr, low, high, key);}else if (arr[mid] < key){low = mid + 1;return binary_search(arr, low, high, key);}};
原文链接:https://github.com/qianbin01/frontend_train#sort
《JavaScript算法》二分查找的思路与代码实现的更多相关文章
- Java-数据结构与算法-二分查找法
		
1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...
 - javascript实现二分查找
		
今天做了道笔试题,要求是实现二分查找,当然不难,想了一下,因为没有要求语言就用javascript实现了.当然,期间还是出来了一点问题. ok,上代码 /* * 稳定二分查找 * 作者:吴伟欣 * * ...
 - 南理第八届校赛同步赛-F sequence//贪心算法&二分查找优化
		
题目大意:求一个序列中不严格单调递增的子序列的最小数目(子序列之间没有交叉). 这题证明贪心法可行的时候,可以发现和求最长递减子序列的长度是同一个方法,只是思考的角度不同,具体证明并不是很清楚,这里就 ...
 - 经典算法二分查找循环实现Java版
		
二分查找 定义 二分查找(Binary Search)又称折半查找,它是一种效率较高的查找方法. 要求 (1)必须采用顺序存储结构 (2)必须按关键字大小有序排列 查找思路 首先将给定值K,与表中中间 ...
 - 莫队算法/二分查找 FZU 2072 Count
		
题目传送门 题意:问区间内x的出现的次数分析:莫队算法:用一个cnt记录x的次数就可以了.还有二分查找的方法 代码: #include <cstdio> #include <algo ...
 - #C++初学记录(贪心算法#二分查找)
		
D - Aggressive cows 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 < ...
 - Java算法 -- 二分查找
		
折半查找,要求待查找的序列有序.每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程.直到 ...
 - C语言实现常用查找算法——二分查找
		
#include<stdio.h> void insert_sort(int a[],int n); int binary_search(int a[],int x,int n); voi ...
 - 查找算法----二分查找与hash查找
		
二分查找 有序列表对于我们的实现搜索是很有用的.在顺序查找中,当我们与第一个元素进行比较时,如果第一个元素不是我们要查找的,则最多还有 n-1 个元素需要进行比较. 二分查找则是从中间元素开始,而不是 ...
 
随机推荐
- PAT Vocabulary
			
数字 单词 词性 中文意 常用 音标 non-negative 非负数 non-negative number Positive 正整数 Positive integer Negative 负数 Ne ...
 - 年近30的Java程序员为了达到月入三万的目标,都做了哪些准备?
			
1.我觉得像我这般年纪的(29岁),有相对扎实技术功底的(就不自谦了),对赚钱有着强烈欲望的程序员,应该定一个切实的小目标——五年内月入三万! 之所以要定这个目标,最主要的原因是老婆的批评刺痛了我—— ...
 - Python列出文件夹中的文件
			
几乎所有的关于操作系统的内容可以在python 官方文档中找到:https://docs.python.org/3/library/os.html#module-os 其中os.path被单独列出:h ...
 - 游程编码run length code
			
今天突然看到一个名词,游程编码.也叫行程编码. 简单理解就是,几个相同连续的字符,然后用数字统计表示. 举个例子: aaaabbbccc 用游程编码的表示就是4a3b3c 如果:连续字符只有一个 那么 ...
 - 5.docker image (镜像)
			
1.image 是什么 是文件和 meta data 的集合 (root filesystem) 是分层的,并且每一层都可以添加改变删除文件,成为一个新的image 不同的image可以共享相同的la ...
 - 查看opencv-python编译信息
			
python -c "import cv2; print(cv2.getBuildInformation())" General configuration for OpenCV ...
 - android中的适配器模式
			
原文: https://blog.csdn.net/beyond0525/article/details/22814129 类适配模式.对象适配模式.接口适配模式
 - StatusBar时间状态栏
			
StatusBar:
 - day57-mysql-五种约束和sql语句逻辑执行顺序
			
二.sql语句逻辑执行顺序 () SELECT () DISTINCT <select_list> 去重复 () FROM <left_table> () <join_t ...
 - 新服务器搭建-总结: 下载nginx,jdk8,docker-compose编排(安装mysql,redis) 附安装
			
三明SEO: 前言 如题, 公司新买了一条4核16G的服务器, 不得不重新搭建环境, 只能一一重来, 做个记录 1.nginx : 手动安装 2.jdk8: 手动安装 3. 安装docker 及doc ...