C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++でvector(ベクトル)を並べ替える方法:std::sort()の使い方


C++でvector(可変長配列)を並べ替えるには、標準ライブラリの std::sort() 関数を使用します。この関数は <algorithm> ヘッダーで定義されており、デフォルトでは要素を昇順(小さい順)に並べ替えます。

また、安定ソートを行いたい場合は std::stable_sort を使用します。これは sort() と同じように動作しますが、値が等しい要素同士の相対的な順序を保持する点が異なります。さらに、要件に応じてクイックソートやマージソートなどのアルゴリズムを自前で実装して利用することも可能です。なお、std::sort() の平均計算量は O(N log N) であり、非常に高速に動作します。

アルゴリズム

開始
  vector型の v を宣言する
  配列形式で v に初期値を設定する
  「ソート前の要素」を出力する
  for (const auto &i : v)
    変数 i の値をすべて出力する
  「ソート後の要素」を出力する
  sort(v.begin(), v.end()) を呼び出し、v の全要素を並べ替える
  for (const auto &i : v)
    変数 i の値をすべて出力する
終了

以下は、C++でvectorをソートする最もシンプルな例です。

サンプルコード

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

int main() {
    vector<int> v = { 10, 9, 8, 6, 7, 2, 5, 1 };

    cout << "Elements before sorting" << endl;
    for (const auto &i : v)
        cout << i << ' ' << endl;

    cout << "Elements after sorting" << endl;
    sort(v.begin(), v.end());

    for (const auto &i : v)
        cout << i << ' ' << endl;

    return 0;
}

実行結果

Elements before sorting
10
9
8
6
7
2
5
1
Elements after sorting
1
2
5
6
7
8
9
10

降順で並べ替える場合

降順(大きい順)にソートしたい場合は、比較基準として greater<int>() を第3引数に指定します。その際は <functional> ヘッダーのインクルードが必要です。

#include <functional>

sort(v.begin(), v.end(), greater<int>());  // 降順でソート

このように std::sort() を使えば、たった1行のコードでvectorの中身を簡単に並べ替えることができます。用途に応じて昇順・降順を使い分けるとよいでしょう。

  1. C++の型推論とは?autoキーワードの基本と使い方をわかりやすく解説

    型推論(Type Inference)とは、プログラミング言語において式のデータ型を自動的に判別する機能のことです。この機能は、強い静的型付けを持つ一部の言語に備わっています。 C++では、C++11で追加されたautoキーワードを使うことで、自動的な型推論が可能になります。これにより、開発者は複雑な型名を明示的に書く必要がなくなり、コードがシンプルで読みやすくなります。 autoキーワードの活用例 たとえば、vectorの要素を走査するイテレータを作成したい場合、従来は std::vector<int>::iterator という長い型名を記述する必要がありました。しかし、aut

  2. C++で配列を並べ替える方法|選択ソートの仕組みと実装例を解説

    C++では、さまざまなソート(並べ替え)アルゴリズムを使って配列を整列できます。ソート済みの配列とは、数値の大小順やアルファベット順など、何らかの基準に従って要素が並び替えられた配列のことです。代表的なソートアルゴリズムには、バブルソート、挿入ソート、選択ソート、マージソート、クイックソート、ヒープソートなどがあります。本記事では、その中でも構造がシンプルで理解しやすい「選択ソート」を取り上げ、実際のコード例とともに詳しく解説していきます。 選択ソートとは? 選択ソートは、未ソート部分の中から最小値を繰り返し探し出し、それを未ソート部分の先頭にある要素と交換することで、配列全体を昇順に整列さ