zoukankan      html  css  js  c++  java
  • 二分查找代码

    也叫折半查找。

    优点:比较次数少,查找速度快,平均性能好。

    缺点:查找的数组必须为排序好的数组。

    时间复杂度:O(logN)

    代码:(递归:用栈保存结果空间消耗严重)

    #include <iostream>
    using namespace std;
    //二分查找  返回位置标号  时间复杂度O(logN)  
    int binarySearch(int list[],int left,int right,int number)
    {
        if(list==NULL)
            return -1;
        int index=0;
        int mid=(right+left)/2;
        if(left>right)
        {
            return -1;
        }
        if(number==list[mid])
        {
            index=mid;
            return index;
        }
        else if(number>list[mid])
        {
            binarySearch(list,mid+1,right,number);
        }
        else
        {
            binarySearch(list,left,mid-1,number);
        }
    }
    int main()
    {
        int a[]={1,3,5,7,9,11,14,16,17,20};
        int left = 0;
        int right = sizeof(a)/sizeof(a[0])-1;
        int index =binarySearch(a,left,right,88);
        cout<<index<<endl;
        return 0;
    }

    非递归:(能用循环不用递归)

    #include <iostream>
    using namespace std;
    //二分查找  返回位置标号  时间复杂度O(logN)  
    int binarySearch(int list[],int left,int right,int number)
    {
        if(list==NULL)
            return -1;
        while(left<right)
        {
            int mid=(right+left)/2;
            if(list[mid] == number)
            {
                return mid;
            }
            else if(number > list[mid])
            {
                left=mid+1;
            }
            else if(number < list[mid])
            {
                right=mid-1;
            }
        }
        return -1;
    }
    int main()
    {
        int a[]={1,3,5,7,9,11,14,16,17,20};
        int left = 0;
        int right = sizeof(a)/sizeof(a[0])-1;
        int index =binarySearch(a,left,right,11);
        cout<<index<<endl;
        return 0;
    }
  • 相关阅读:
    好久没来园子里转了,最近在学ssh,有个小问题提出来
    ClearType使用的问题
    Metro中访问特定设备的方法
    UMDF驱动程序快速上手
    关于GPS使用上的一个怪异问题
    一个不能创建WINCE6.0工程的问题
    Metro开发小记
    在WINPE中添加驱动
    DOS命令活用
    METRO开发中的多语言处理
  • 原文地址:https://www.cnblogs.com/westlife-11358/p/9304118.html
Copyright © 2011-2022 走看看