partial_sortによる部分ソート

http://www.geocities.jp/ky_webid/cpp/library/019.html

partial_sort関数を使えば、例えば先頭からn個までがソートされた時点で処理を中断するといったことができます。

実例を見たほうが早いですね。

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main () {
    vector<int> data;
    
    data.push_back(9);
    data.push_back(4);
    data.push_back(2);
    data.push_back(3);
    data.push_back(1);
    data.push_back(5);
    data.push_back(7);
    data.push_back(8);
    data.push_back(6);
    
    // 4個目までソートする
    partial_sort(data.begin(),data.begin()+4,data.end());
    
    copy(data.begin(),data.end(),ostream_iterator<int>(cout,"\n"));
    
    return 0;
}
$ main
1
2
3
4
9
5
7
8
6

上から4つ目前ではソートされていますね。

上記のように書くと4つ目までソートした時点で処理を中断します。

データの多いリスト等で小さな値から順に10個まで欲しいだけなのに全部ソートしなければならないのは微妙なんていうときに使えそうですね。