//折半查找
#include <iostream>
#include <cstdlib>
using namespace std;
//非递归折半查找
int binarySearch1(int A[], int n, int e){
int low, mid, high;
low=0;
high=n-1;
while(low<=high){
mid = (low+high)/2;
// cout << mid << " " << A[mid] << " " << e << endl;system("pause");
if(A[mid]==e) return mid;
else if(A[mid]<e) low = mid+1;
else high = mid-1;
}
return -1;
}
//递归折半查找
int binarySearch2(int A[], int low, int high, int e){
int mid = (low+high)/2;
if(low<=high){
if(A[mid]==e) return mid;
else if(A[mid]<e) return binarySearch2(A, mid+1, high, e);
else return binarySearch2(A, low, mid-1, e);
}
return -1;
}
int main(){
int A[] = {1,2,3,4,5};
int i;
cout << binarySearch1(A, 5, 5) << endl;
cout << binarySearch2(A, 0, 4, 5) << endl;
return 0;
}
折半查找
最新推荐文章于 2022-04-25 16:42:50 发布