二分法查找算法
基本步骤:
第一步:获取数组中间的下标
第二步:中间下标处的值和目标值比较,如果目标值大,说明要找的值在数组的后边一半中
第三步:再次获取数组右边一半的中间下标
第四步:再次用获得的中间下标和目标值进行比较
后续步骤以此类推,这样每次查找都在“半份”数据中进行,所以又叫折半查找。这也是为什么使用二分法查找之前必须要对数组进行排序的原因。如果不排序,将无法判断目标值在哪“半份”中实例:
package algorithm.binary_search;
/**
* 演示二分法查找算法
* @author 学霸联盟 - 赵灿
*/
public class BinarySeachDemo {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5, 6, 7 };
//目标值,查找6在数组中的下标
int tagValue = 6;
int index = binarySeach(arr, tagValue);
if(index > -1){
System.out.println("目标值:" + tagValue + "的下标为:" + index);
} else {
System.out.println("没有找到目标值:" + tagValue);
}
}
/**
* 实现二分法查找的方法
*/
public static int binarySeach(int[] arr, int tagValue){
//查找范围的第一个下标
int firstIndex = 0;
//查找范围的最后一个下标
int lastIndex = arr.length - 1;
//如果第一个下标比最后一个下标还大,就没有必要再查找了,结束循环
while (firstIndex <= lastIndex) {
//获取查找范围中间的下标
int index = (lastIndex - firstIndex) / 2 + firstIndex;
if(arr[index] == tagValue){
//如果两个值相等,说明index就是要找的下标
//如果找到目标值,执行此处的return语句
return index;
} else if(arr[index] > tagValue){
//如果中间下标处的值比目标值大,说明查找范围在index的左侧
//所以应该将查找范围的最后一个下标设置为index-1
lastIndex = index - 1;
} else {
//否则说明查找范围在index的右侧
//所以应该将查找范围的第一个下标设置为index+1
firstIndex = index + 1;
}
}
//如果循环执行完了还没有找到,返回-1
//因为数组的下标不可能为-1,所以-1代表没有找到
return -1;
}
}
运行结果:
目标值:6的下标为:5
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界
Java常用高效8大排序算法与二分法查找,适合正在学习算法和准备学习算法的算法爱好者和研究使用算法的开发人员使用。
Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找 Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找
此程序可实现二分查找算法,采用的是C编程。
九章算法之二分法(Binary Search) 适合找工作的小伙伴
写出二分法查找算法函数实现。
——二分法查找 目录 课程导入 1 清楚并牢记二分法的实现条件 2 理解二分法的实现思路 3 读懂二分法的实现代码 数组的查找——二分法查找 也称拆半查找法,是一种高效的查找方法,前提条件是数组元素必须已经按升序...
折半查找算法(二分法).ppt
初学java的基础算法,巩固学习,面试常考的基础算法,自己面试被问了几次,所以总结出来给大家分享!!!!
c 二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法...
二分法查找是一种常用的查找算法,也称为折半查找。它适用于有序数组中查找某个元素的位置。二分法查找的思路是将数组分成两部分,每次查找都将待查找区间缩小一半,直到找到目标元素或者待查找区间为空为止。 ...
计算机二分法的算法步骤-五大常用算法之一:分治算法,算法数据结构 五大常用算法
这是一个百度面试的题目,乱序给出从1到1000的999个数,其中有一个数丢失了,找出这个数,给出了3种解决方法,并给出的运行时间,对比了3种方案优劣
欢迎下载,资源共享。c语言实现。排序方法
二分法查找算法.doc
Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找(同步到博客).doc
分别用递归和非递归方法实现二分查找算法 的完整程序,indexof()返回的是循环实现的二分法查找,getindex()实现的是递归算法实现的二分法查找。
精简算法 二分法查找数组 算法精简查找效率高!
class binary_search { public: int * arr; int nElems; public : binary_search(); binary_search(int max); virtual ~binary_search(); int find(int searchKey); void insert(int value);...
二分法检索查找 计算机算法 c/c++语言