栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

二分查找递归实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二分查找递归实现

递归实现
  • 1.python
  • 2.java
  • 3.C++

1.python
def binary_Search(Array, num,small_num=None,high_num=None):
    small_num = small_num if small_num else 0
    high_num = high_num if high_num is not None else len(Array) - 1
    mid_num = (high_num + small_num) // 2
    if small_num <= high_num:
            if num > Array[mid_num]:
            	return binary_Search(Array,num,mid_num+1,high_num)
            elif num < Array[mid_num]:
            	return  binary_Search(Array, num, small_num,mid_num-1)
            else :
            	return mid_num
    else:
            return '%s值不存在'%num
lis = [99, 222, 444, 544, 555, 567, 777, 786, 787, 991, 998, 5555, 8877]
ret = binary_Search(lis,555)
print('索引值为%s,对应值为%s'%(ret,lis[ret]))

2.java
package Package01;



public class BinarySearch {
    public static void main(String[] args) {
        int arr[] = {1,8,10,89,1000,1234};

        int resIndex = binarySearch(arr,0,arr.length-1,1);

        System.out.println("resIdex=" + resIndex);

        }


    //二分查找算法
    

    public static int binarySearch(int[] arr, int left, int right, int findVal){
        if (left > right) {
            return -1;
        }

        int mid = (left+right)/2;
        int midVal = arr[mid];

        if(findVal > midVal){
            //向右递归
            return binarySearch(arr,mid+1,right,findVal);

        }else if(findVal < midVal){
            return binarySearch(arr,left,mid-1,findVal);
        }else{
            return mid;
        }

    }
    
    }



3.C++
#include
using namespace std;
int binarySearch(int *arr , int low , int high , int target)//递归实现
{
	int middle = (low + high)/2;
	if(low > high)
		return -1;
	if(arr[middle] == target)
		return middle;
	if(arr[middle] > target)
		return binarySearch( arr , low , middle - 1 , target);
	if(arr[middle] < target)
		return binarySearch( arr , middle + 1 , high , target);
 
};

int main()
{
	int a[10] = {5,6,7,8,9, 10 , 11, 12 ,13, 14};
	int index = binarySearch( a , 0 , 9 , 12);
	cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925955.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号