对半搜索递归实现 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) 编辑 收藏 举报