#include<iostream>
using namespace std;
//递归的二分查找
int BinSearchRecuision(int a[],int left,int right,int x){
if(left<=right){
int mid=(left+right)/2;
if(x==a[mid])return mid;
if(x<a[mid]) return BinSearchRecuision(a,left,mid-1,x);
else return BinSearchRecuision(a,mid+1,right,x);
}
else return -1;
}
//非递归的二分查找
int BinSearch(int a[],int low,int high,int x){
if(low>high) return -1;
while(low<=high){
int mid=(low+high)/2;
if(x==a[mid])return mid;
if(x<a[mid]) high=mid-1;
else low=mid+1;
}
}
int main(){
int a[]={1,34,56,60,78,89,100,101,101,101,102,102,200,10000,100000223};
int len=sizeof(a)/sizeof(int);
int loc1=BinSearch(a,0,len-1,101);
cout << "BinSearch:" << loc1 << endl;
int loc2=BinSearchRecuision(a,0,len-1,101);
cout << "BinSearchRecuision:" << loc2;
system("pause");
return 0;
}
二分查找算法
最新推荐文章于 2024-10-21 22:00:00 发布