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

      还是编程珠玑上的东西,作者对最初的算法稍微优化了一下。

    #include <iostream>
    #include <algorithm>
    #define N 10
    using namespace std;
    
    int binary_search(int *x,int n,int t)        //x为要查找的数组,n为数组的大小,t为要找的值,找到则返回值的位置,否则返回-1
    {
        int l=-1;        //数组下界
        int u=n;        //数组上界
        int p;            //查找的值在数组中的位置
        int m;            //最中间的索引
        while(l+1!=u)
        {
            m=(l+u)/2;
            if (x[m]<t)
                l=m;
            else
                u=m;
        }
        p=u;
        if (p>=n || x[p]!=t)
            p=-1;
        return p;
    }
    
    int main()
    {
        int x[N]={31,-41,59,26,-53,58,97,-93,-23,84};
        sort(x,x+N);        //这个是快排,绝对比自己写的效率高
    
        for (int i=0;i<N;i++)
            cout<<x[i]<<" ";
        cout<<endl;
    
        for (int i=0;i<N;i++)        
            cout<<binary_search(x,N,x[i])<<endl;
    
        cin.get();
        return 0;
    }
  • 相关阅读:
    hdu 1257 贪心
    hdu 4301 简单DP
    hdu 4221 贪心
    hdu 4223 排序
    hdu 4217 树状数组+二分搜索
    hdu 2899
    hdu 1312
    hdu 1258
    hdu 3276
    hdu 3274
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2791441.html
Copyright © 2011-2022 走看看