zoukankan      html  css  js  c++  java
  • STL_算法_依据第n个元素排序(nth_element)

    C++ Primer 学习中。。。

     

    简单记录下我的学习过程 (代码为主)


    //全部容器适用
    nth_element(b,n,e)
    nth_element(b,n,e,p)
    对照:partition()算法


    /**------http://blog.csdn.net/u010579068------**/
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<vector>
    #include<list>
    #include<functional>
    #include<deque>
    #include<algorithm>
    using namespace std;
    
    /*****************************************
    //全部容器适用
    nth_element(b,n,e)
    nth_element(b,n,e,p)
    对照:partition()算法
    *****************************************/
    /**----------------------------------------------------------------------------------
    
    ----------------------------------------------------------------------------------**/
    /*************************************************************************************
    std::nth_element                    全部排序容器适用                        algorithm
    --------------------------------------------------------------------------------------
    template <class RandomAccessIterator>
      void nth_element ( RandomAccessIterator first, RandomAccessIterator nth,
                         RandomAccessIterator last );
    
    template <class RandomAccessIterator, class Compare>
      void nth_element ( RandomAccessIterator first, RandomAccessIterator nth,
                         RandomAccessIterator last, Compare comp );
    //eg:
    
    *************************************************************************************/
    
    
    bool myfunction (int i,int j)
    {
        return (i>j);
    }
    
    int main ()
    {
        int m[]= {3,4,5,6,7,2,3,4,5,6,1,2,3,4,5};
        vector<int> myvector(m,m+15);
        vector<int>::iterator it;
    
    //  set some values:
    //    for (int i=1; i<10; i++) myvector.push_back(i);   // 1 2 3 4 5 6 7 8 9
    
    //    random_shuffle (myvector.begin(), myvector.end());
    
        cout << "myvector contains:(原始数据)";
        for (it=myvector.begin(); it!=myvector.end(); ++it)
            cout << " " << *it;
    
        cout << endl;
    //   using default comparison (operator <):
    //   cout<<*(myvector.begin()+3)<<endl;
        nth_element (myvector.begin(), myvector.begin()+3, myvector.end());
    
        cout << "myvector contains:(从小到大)";
        for (it=myvector.begin(); it!=myvector.end(); ++it)
            cout << " " << *it;
    
        cout << endl;
    
    //  using function as comp
    //    cout<<*(myvector.end()-4)<<endl;
    //    nth_element (myvector.begin(), myvector.begin()+3, myvector.end(),myfunction);
        nth_element (myvector.begin(), myvector.end()-4, myvector.end(),greater<int>());
        // print out content:
        cout << "myvector contains:(从大到小)";
        for (it=myvector.begin(); it!=myvector.end(); ++it)
            cout << " " << *it;
    
        cout << endl;
    
        return 0;
    }
    


  • 相关阅读:
    2019-2020-2 网络对抗技术 20175232 司浩楠 Exp2 后门原理与实践
    2019-2020-2 网络对抗技术 20175232 司浩楠 Exp1 PC平台逆向破解
    2019-2020-1 20175232 20175233 《信息安全系统设计基础》实验五 通讯协议设计
    Linux中Qt的安装
    面向对象编程与面向过程编程的区别与联系
    Web服务器端程序的实现
    Web服务器文件传输程序客户端程序实现
    Web服务器实现文件传输程序设计
    屏蔽信号的多路选择I/O
    浅谈HTTP请求与响应
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7088389.html
Copyright © 2011-2022 走看看