二分查找--递归和非递归(c++)考研自用

Posted 至尊小涛丫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找--递归和非递归(c++)考研自用相关的知识,希望对你有一定的参考价值。

/**
二分查找
*/

#include<iostream>
#include<string>

using namespace std;
//非递归形式
int bin_search(int A[],int n,int key){
int mid ,low=0,high=n-1;
while(low<=high){
    mid = (low+high)/2;
    if(A[mid]==key) return mid; //返回查找到元素的下标
    else if(key<A[mid]){
            high = mid-1;
    }
    else low = mid+1;
}
return -1; //表示没有查到
}
//递归形式
int bin_search_digui(int A[],int low,int high,int key){
    int mid;
    if(low>high) return -1;
    else{
        mid = (low+high)/2;
    if(key==A[mid]) return mid;
    else if(key>A[mid]){
        bin_search_digui(A,mid+1,high,key);
    }else{
        bin_search_digui(A,low,mid-1,key);
    }
    }
}

int main(){
int A[10]={1,12,32,45,65,87,98,123,124,156};
cout<<"1.非递归形式"<<endl;
cout<<"排序之后的下标为:"<<bin_search(A,10,12)<<endl;
cout<<"排序之后的结果为:"<<A[bin_search(A,10,12)]<<endl;
cout<<"2.递归形式的"<<endl;
cout<<"排序之后的下标为:"<<bin_search_digui(A,0,10,12)<<endl;
cout<<"排序之后的结果为:"<<A[bin_search_digui(A,0,10,12)]<<endl;
}

以上是关于二分查找--递归和非递归(c++)考研自用的主要内容,如果未能解决你的问题,请参考以下文章

2019.9.25-二分查找代码(递归和非递归方法)

递归和非递归的二分查找

二分查找(递归和非递归)

二分查找的递归和非递归写法

图解二分查找的递归和非递归实现

二分查找的递归和非递归实现