二元搜尋法 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 );
}

results matching ""

    No results matching ""