zoukankan      html  css  js  c++  java
  • 二分法查找的循环实现与递归实现

    二分法查找,就是在一列按顺序排列的数中查找某个数,以下是C++循环实现与递归实现

    #include <iostream>
    
    using namespace std;
    int findit(int a[],int b);
    int main()
    {
        int a[100];
        int b;
        int c;
        for(int i=0;i<100;i++)
        {
            a[i]=i;
        }
        cin>>b;
        c = findit(a,b);
        cout << c << endl;
        return 0;
    }
    int findit(int a[],int b)
    {
        int begin = 0;
        int end = 99;
        int mid = 0;
        while(begin<=end)
        {
            mid = (begin+end)/2;
            if(a[mid]==b)
            {
                return mid;
            }
    
            else if(a[mid]>b)
                end = mid-1;
            else
                begin=mid+1;
        }
        return -1;
    }

    循环实现

    #include <iostream>
    
    using namespace std;
    int findit(int a[],int b);
    int findit2 (int a[],int b,int begin,int end);
    int main()
    {
        int a[100];
        int b;
        int c;
        for(int i=0;i<100;i++)
        {
            a[i]=i;
        }
        cin>>b;
        c=findit2(a,b,0,99);
        //c = findit(a,b);
        cout << c << endl;
        return 0;
    }
    
    int findit2 (int a[],int b,int begin,int end)
    {
        int mid =  (begin+end)/2;
        if(begin>end)
            return -1;
        else if(a[mid]==b)
            return mid;
        else if(a[mid]>b)
            findit2(a,b,begin,mid-1);
        else
            findit2(a,b,mid+1,end);
    }

    递归实现

    此处,递归实现要比循环实现耗时间,也更耗空间,计算机处理递归的能力相对较低。

  • 相关阅读:
    BOM-Window窗口对象
    BOM
    案例:电灯开关
    事件简单学习
    简单学习
    ECMAScript基本对象——Global全局对象
    ECMAScript基本对象——RegExp 正则表达式对象
    ECMAScript基本对象——String 对象
    zk安装管理
    kafka服务器批量copy文件脚本
  • 原文地址:https://www.cnblogs.com/shuhaoz/p/4411597.html
Copyright © 2011-2022 走看看