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;
    }
    


  • 相关阅读:
    git 常用命令
    centos 7 mini 安装
    python打印杨辉三角
    python 求100内的素数/质数
    字符串与bytes
    format
    Python字符串格式化
    数据结构
    ARM工作模式
    C语言实现字符串逆序输出
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7088389.html
Copyright © 2011-2022 走看看