zoukankan      html  css  js  c++  java
  • 对半搜索递归实现 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;
    }


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

  • 相关阅读:
    Java 类与类之间的调用
    File类中的list()和listFiles()方法
    关于GITLAB若干权限问题
    JAVA 判断一个字符串是不是一个合法的日期格式
    JAVA日期加减运算
    Java读写文件的几种方法
    在Coding.net创建项目开发
    IntelliJ IDEA 创建项目project和module的关系
    对xml文件的简单解析
    Intellij IDEA使用总结
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965261.html
Copyright © 2011-2022 走看看