java二分法查找递归(java实现二分查找的递归算法)

华为云服务器特价优惠火热进行中!

2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。

合作流程:
1、点击链接注册/关联华为云账号:点击跳转
2、添加客服微信号:cloud7591,确定产品方案、价格方案、服务支持方案等;
3、客服协助购买,并拉微信技术服务群,享受一对一免费技术支持服务;
技术专家在金蝶、华为、腾讯原厂有多年工作经验,并已从事云计算服务8年,可对域名、备案、网站搭建、系统部署、AI人工智能、云资源规划等上云常见问题提供更专业靠谱的服务,对相应产品提供更优惠的报价和方案,欢迎咨询。

今天给各位分享java二分法查找递归的知识,其中也会对java实现二分查找的递归算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

微信号:cloud7591
如需了解更多,欢迎添加客服微信咨询。
复制微信号

本文目录一览:

前端算法详解——二分法(查找、排序、去重、最小值)

需求:针对一有序数组查找某一个姿纳数是否在该数组中。

分析与思路: 二分法,一分为二。将数组分为两个进行查找,若该数小于中间值,则向左查找,否则向右查找。然后递归再次查找(这样每一次都是排除掉一半的不可能)

需求:将无序数组进行排序。

分析与思路: 将原始数组一分为二个数组(left、right),再讲这两个数组利用递归再次进行拆分...最后再将左右两个数组进行排氏燃序。

分析与思路:歼册虚同理将数组一分为二,左右分别去重,在一起去重

二分查找偶数

奇数的时候:就是中间值

偶数的时候:取n/2取整,实际帆圆纯上剩下态咐的序列是 索引为取整左边的序腔指列。

# 二分查找

# 方法一:递归

def binary_search(alist, item):

# 数列长度

n = len(alist)

# 递归的结束条件

if n == 0:

return False

# 中间值

# // 是取整

mid = n // 2

if item == alist[mid]:

return True

elif item alist[mid]:

return binary_search(alist[0:mid], item)

elif item alist[mid]:

return binary_search(alist[mid + 1:], item)

if __name__ == '__main__':

alist = [1, 2, 3, 4, 5]

print(binary_search(alist, 3))

用Java语言编写对整型数组进行二分查找的程序。

public class BinarySearchDemo {

public static void main(String[] args) {

int[] a = new int[]{1,5,7,9,11,18,23,48,69};

int point = new BinarySearchDemo().binarySearch(a, 23);

if(point == -1)

System.out.println("在数组中未查找到数23");

else

System.out.println("数字23是数组中第 " + (point + 1) + " 位数");

}

/**

* 二分法查找一个整数在整型数组中腊迟告的位置

*

* 算法思路:首先得到数组a的最小值和最大值的下标,分别是:low和high,接着求出值位于数组中间那个数的下标middle

* 然后旦裤再将这个middle对应的数组中的数和待查找的数num进行比较,如果相等,则表示已轮明查找到,如果num a[middle]

* 则说明num位于a[low]和a[middle]之间,于是将a[middle - 1]设为较大值,继续求出此时对应的a[middle],

* 再进行比较,其他情况可依次类推。一直到low=high,如果此时还没有在数组a中查找到,则说明该数组a中没有值num,返回-1

*

* @param a 给定的整型数组

* @param num 待查找的数 num

*

* @return 返回整数num在数组a中的位置下标,如果未查找到则返回-1

* */

public int binarySearch(int[] a,int num){

int low = 0;

int high = a.length - 1;

while(low = high){

int middle = (low + high) / 2;

if(num == a[middle])

return middle;

else if(num a[middle])

high = middle - 1;

else

low = middle + 1;

}

return -1;

}

}

程序基本上就是这样了,其中注释中有详细的解释说明

二分法查找介绍 二分法查找是什么

1、算法:二分法查找适用于数据量较大时,但是数据腊升灶需要先排好顺序。

2、主要思想是:(设查找的数组区间为array[low, high])确定该区间的中间位置K。将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续轮扮二分查找。区域确定如下:a.array[k]T 由数组的有序性可知array[k,k+1,……,high]T;故新的区间为array[low,……,K-1]b.array[k]t p="" 类似上面查找区间为array[k+1,……,high]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间将缩小一半,递归查找即可笑态。时间复杂度为:o(log2n)。

java数据结构二叉树查找结点操作,递归调用求详细讲解

这是先序遍历树的代码,什么是先序遍历呢,一种按照根-左子树-右子树的顺序遍历树就是先序告友遍历。

CBTType TreeFindNode(CBTType treeNode,String data){

CBTType ptr;

if(treeNode==null){//输入根节点为空时

return null;

}else{

if(treeNode.data.equals(data)){//根节点等于要查找的数据时

return treeNode;

}else{

if((ptr=TreeFindNode(treeNode.left,data))!=null){//从左子树查找,为什么可以用TreeFindNode表示呢?

return ptr;

}else if((ptr=TreeFindNode(treeNode.right,data))!=null){//从右子树查找

return ptr;

}else{

return null;

}

}

}

}

从左子树查找,为什么可州友型以用TreeFindNode表示呢?因为,左子树也可以按照先序遍历的顺序查找的,所以当然可以用TreeFindNode表示,如果你想左子树用中序遍历查找,那么就不可以用TreeFindNode表示。

上述例册猜子的查找过程:

1 --根(2,4,5)--左(3,6,7)--右

2--根(4)--左(5)--右

4--根

5--根

返回

用java写二分搜索,要求数组是由用户输入,再输入时,数组是无序的,要对数组进行从小到大的排序

二分查找又称折半查找,它是一种效率较高的查找方法。

【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键哗喊型字大小有序排列。

/**

* 二分查找又称折半查找,它是一种效率较高的查找方法。

【二渗或分查找要求】:乱猜1.必须采用顺序存储结构 2.必须按关键字大小有序排列。

* @author Administrator

*

*/

public class BinarySearch {

public static void main(String[] args) {

int[] src = new int[] {1, 3, 5, 7, 8, 9};

System.out.println(binarySearch(src, 3));

System.out.println(binarySearch(src,3,0,src.length-1));

}

/**

* * 二分查找算法 * *

*

* @param srcArray

* 有序数组 *

* @param des

* 查找元素 *

* @return des的数组下标,没找到返回-1

*/

public static int binarySearch(int[] srcArray, int des){

int low = 0;

int high = srcArray.length-1;

while(low = high) {

int middle = (low + high)/2;

if(des == srcArray[middle]) {

return middle;

}else if(des srcArray[middle]) {

high = middle - 1;

}else {

low = middle + 1;

}

}

return -1;

}

/**

*二分查找特定整数在整型数组中的位置(递归)

*@paramdataset

*@paramdata

*@parambeginIndex

*@paramendIndex

*@returnindex

*/

public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){

int midIndex = (beginIndex+endIndex)/2;

if(data dataset[beginIndex]||datadataset[endIndex]||beginIndexendIndex){

return -1;

}

if(data dataset[midIndex]){

return binarySearch(dataset,data,beginIndex,midIndex-1);

}else if(datadataset[midIndex]){

return binarySearch(dataset,data,midIndex+1,endIndex);

}else {

return midIndex;

}

}

}

关于java二分法查找递归和java实现二分查找的递归算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发布于 2023-04-13 21:04:36
收藏
分享
海报
28
目录

    忘记密码?

    图形验证码

    复制成功
    微信号: cloud7591
    如需了解更多,欢迎添加客服微信咨询。
    我知道了