ソートのアルゴリズム
http://www.geocities.jp/ky_webid/cpp/library/019.html
ソート関係の関数をいくつか。
その名もsort関数。内部実装としてはクイックソートであることが多いようです。ちなみにC言語にはqsortという標準関数がありましたね。
とりあえず使ってみます。
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main () { vector<int> data; data.push_back(4); data.push_back(2); data.push_back(3); data.push_back(1); // 昇順ソート sort(data.begin(),data.end()); copy(data.begin(),data.end(),ostream_iterator<int>(cout,"\n")); return 0; }
$ main 1 2 3 4
簡単ですね。ただしこのsort関数は安定ソートではないので注意が必要です。
では安定ソートしたい場合はどうするか。stable_sort関数を使います。
使い方はsortとまったく一緒です。
#include <iostream> #include <algorithm> #include <vector> #include <functional> using namespace std; int main () { vector<int> data; data.push_back(4); data.push_back(2); data.push_back(3); data.push_back(1); // 降順ソート stable_sort(data.begin(),data.end(),greater<int>()); copy(data.begin(),data.end(),ostream_iterator<int>(cout,"\n")); return 0; }
$ main 4 3 2 1
ちなみに降順ソートでやってみました。greater