二元搜尋法 C++ 解答
#include <iostream>
using namespace std;
int Bsearch(int *A, int low, int up, int key)
{
if(low <= up) {
int mid = low + (up-low)/2;
if(key==A[mid])
return mid;
else if(key>A[mid])
return Bsearch(A, low, mid-1, key);
else
return Bsearch(A, mid+1, up, key);
}
return -1;
}
int main(){
int ary[]={1,2,3,4,5,6};
cout<<Bsearch(ary,0,5,3);
//輸出2
}
另一種寫法
#include<iostream>
using namespace std;
int ary[5]={1,2,3,4,5};
int bsearch(int target,int left,int right){
int middle = (left+right)/2;
if(left>right){
return -1;//哭哭,沒找到所以回傳-1
}
if(ary[middle]==target){
return middle;//找到target啦!!!!!!
}
else if(ary[middle]<target){
left= middle +1;
bsearch(target,left,right);
}
else if(ary[middle]>target){
right= middle -1;
bsearch(target,left,right);
}
}
int main(){
// bsearch(target, left, right);
cout<<bsearch( 3 , 0 , 5-1 );
}