条件1:数组为整型数组,并且有序
条件2:用递归方法,数组包含传的数字,就返回存在于数组的位置,否则返回-1
二分法原理:有序数组,取中间数字(A)和要查找的参数(B)比较,如果A>B,则说明B在A的左侧,否则在右侧,然后再拿左侧的中间数字和B比较,以此类推。
代码:
/**
* 二分法查找,在有序数组中找位置
* @author 张凯
* @email zhangkai081@gmail.com
* @see 做人,总要信。
*/
public class TwoSearch {
/**
* 二分法查找
* @param number 有序数组
* @param num 要查找的数字
* @param left 左边位置
* @param right 右边位置
* @param mid 中间位置
* @return 返回数字在数组中的位置,没有则返回-1
*/
public static int search(int[] number,int num,int left,int right,int mid) {
/**
* 1,left == right 说明数组为空或长度为1
* 2,number[mid] != num 说明数组长度为1的时候,元素不等于要找的数字
*/
if (left == right && number[mid] != num) {
return -1;
}
/**
* 如果number[mid] == num 那就返回mid。
*/
if (number[mid] == num) {
return mid;
}
/**
* 如果mid == left 或者 mid == right ,说明从中间已经找到left或者right边了,还没有找到,返回-1
*/
if (mid == left || mid == right) {
return -1;
}
/**
* 如果大于中间,那往right找,然后把right侧的再折半找
*/
if (num > number[mid]) {
mid++;
return search(number,num,mid,right,(mid+right)/2);
} else {
/**
* 如果小于中间的数字,就往left找,然后把left侧的再折半找
*/
mid--;
return search(number,num,left,mid,(left+mid)/2);
}
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
int[] number = {1,4,5,66,77,4545};
int num = 66;
int left = 0;
int right = number.length - 1;
int mid = (left + right) / 2;
int a = search(number, num, left, right, mid);
System.out.println(a);
}
}
ps:如果写的有问题,给指出来,谢谢啦。如有更好的方法也可以讨论。
分享到:
相关推荐
C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,
c 二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法查找二分法...
C语言实现的二分法快速查找|二分法排序|二分法查找C#
二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界
二分法查找法
——二分法查找 目录 课程导入 1 清楚并牢记二分法的实现条件 2 理解二分法的实现思路 3 读懂二分法的实现代码 数组的查找——二分法查找 也称拆半查找法,是一种高效的查找方法,前提条件是数组元素必须已经按升序...
二分法查找 (源码 C Java)
使用二分法查找的MATLAB程序编写,方便刚接触MATLAB的同学分享学习。
二分法查找和顺序查找 排序后二分法
题目要求演示二分法查找过程,用箭头跟踪指示出二分查找过程中的查找位置。设计思想为用两个数组实现,一个用于存数据另一个用来存箭头。只要存箭头的下标于每次查找的数的下标相等就可以实现,难点在于如何把数得...
给定的表中用二分法查找指定数 给定的表中用二分法查找指定数 给定的表中用二分法查找指定数
二分法查找是一种常用的查找算法,也称为折半查找。...总之,二分法查找是一种常用的查找算法,适用于有序数组中查找某个元素的位置。通过将待查找区间缩小一半的方式,可以快速地定位目标元素,时间复杂度为O(log n)。
写出二分法查找算法函数实现。
易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar ...
易语言有序二分法查找源码,有序二分法查找,算法_二分法
二分法数据查找C语言实现,只有10%程序员能正确实现二分查找算法--http://news.csdn.net/a/20100423/218099.html
二分法查找,文章:https://blog.csdn.net/yysyangyangyangshan/article/details/83834022
一个二分法查找的图形演示程序,C++,一个二分法查找的图形演示程序,一个二分法查找的图形演示程序
精简算法 二分法查找数组 算法精简查找效率高!