对半搜索递归实现 C++

把文字粘贴过来发现下标会乱掉,就存图了。


对半查找递归实现函数:

int Bsearch(int& x, int left, int right){
    if(left <= right){    			//若表(子表)非空 
        int m = (left + right)/2;   //对半分割 
        if(x == arr[m]) return m;   //搜索成功 
        else if(x < arr[m])
            return Bsearch(x, left, m-1);  //搜索左半子表 
        else 
            return Bsearch(x, m+1, right); //搜索右半子表 
    }
    return -1; //表示没查找到 
}

注意对半搜索要求数组有序,测试代码:

#include <iostream>
#include <algorithm>
using namespace std;
int arr[6];
int Bsearch(int& x, int left, int right){
    if(left <= right){    			//若表(子表)非空 
        int m = (left + right)/2;   //对半分割 
        if(x == arr[m]) return m;   //搜索成功 
        else if(x < arr[m])
            return Bsearch(x, left, m-1);  //搜索左半子表 
        else 
            return Bsearch(x, m+1, right); //搜索右半子表 
    }
    return -1; //表示没查找到 
}
//测试 
int main(){
    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 3;
    arr[3] = 6;
	arr[4] = 10;
	arr[5] = 8;
	sort(arr, arr+6);   //对半查找要求数组有序 
    int sea;
    cout << "输入查找元素:"; 
    cin >> sea;
    if(Bsearch(sea, 0, 5) >= 0){
        cout << "该元素对应的下表是:" << Bsearch(sea, 0, 5) << endl;
        }
    else{
        cout << "数组中不存在该元素" << endl;
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2015-08-09 17:38  Tob__yuhong  阅读(331)  评论(0编辑  收藏  举报

导航