#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
//二分查找 递归和非递归
int arr[100];
int binarySearch(int arr[],int l,int r,int x){
if(l<=r){
int mid=(l+r)/2;
if(arr[mid]==x)return mid;
if(arr[mid]<x)return binarySearch(arr,mid+1,r,x);
if(arr[mid]>x)return binarySearch(arr,l,mid-1,x);
}else {
return -1;
}
}
int binarySearch2(int arr[],int n,int x){
int l=0;
int r=n-1;
while(l<=r){
int mid=(l+r)/2;
if(arr[mid]>x){r=mid-1;}
else if(arr[mid]<x){l=mid+1;}
else if(arr[mid]==x){return mid;}
}
return -1;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>arr[i];
}
int s;
cin>>s;
int res=binarySearch(arr,0,n-1,s);
int res2=binarySearch2(arr,n,s);
cout<<res<<endl;
cout<<res2<<endl;
return 0;
}
c++实现二分查找 递归和非递归
最新推荐文章于 2023-06-25 18:31:12 发布