二分查找--递归和非递归(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++)考研自用的主要内容,如果未能解决你的问题,请参考以下文章