C++のSTLを使ってvectorを降順にソートする方法をわかりやすく解説
このチュートリアルでは、C++のSTL(標準テンプレートライブラリ)を使用して、vectorの要素を降順にソートする方法について解説します。
vectorを降順にソートするには、<algorithm>ヘッダーに含まれるsort()関数と、比較用の関数オブジェクトgreater<int>()を組み合わせます。通常、sort()関数はデフォルトで昇順にソートしますが、第3引数にgreater<int>()を指定することで、降順でのソートが簡単に実現できます。
サンプルコード
#include <bits/stdc++.h>
using namespace std;
int main(){
//vectorの宣言
vector<int> a = { 1, 45, 54, 71, 76, 12 };
cout << "Vector: ";
for (int i = 0; i < a.size(); i++)
cout << a[i] << " ";
cout << endl;
//降順にソート
sort(a.begin(), a.end(), greater<int>());
cout << "Sorted Vector in descending order: ";
for (int i = 0; i < a.size(); i++)
cout << a[i] << " ";
cout << endl;
return 0;
}実行結果
Vector: 1 45 54 71 76 12 Sorted Vector in descending order: 76 71 54 45 12 1
コードの解説
このプログラムの重要なポイントは以下の通りです。
sort(a.begin(), a.end(), greater<int>()):第1引数と第2引数でソートする範囲(イテレータ)を指定し、第3引数のgreater<int>()によって降順ソートを行っています。greater<int>()は、最初の引数が2番目の引数より大きい場合にtrueを返す関数オブジェクトで、これにより大きい値から順に並べ替えられます。sort()関数の計算量はO(N log N)であり、非常に効率的なソートが可能です。
なお、C++17以降ではgreater<>()のようにテンプレート引数を省略して記述することもできます。また、独自の比較条件でソートしたい場合は、ラムダ式を第3引数に渡す方法も便利なので、あわせて覚えておくとよいでしょう。
-
C#の非静的メソッドを使って1次元配列を降順に並べ替える方法
C#では、Array.Sort()などの組み込みメソッドを使わずに、自作の非静的メソッドとネストしたforループを組み合わせることで、1次元配列を降順(大きい順)に並べ替えることができます。ここでは、その基本的な実装方法を解説します。1. 並べ替え前のリストを用意するまず、並べ替えていない整数型の配列を定義します。int[] list = {87, 45, 56, 22, 84, 65};2. ネストしたforループで並べ替える次に、関数(非静的メソッド)に渡された配列を並べ替えるために、二重のforループを使用します。外側のループで基準となる要素を決め、内側のループでそれ以降の要素と比較しな
-
C#のArrayクラスメソッドを使って1次元配列を降順に並べ替える方法
まず、並べ替え前の(ソートされていない)配列を用意します。 int[] list = {98, 23, 97, 36, 77}; 最初に、Sort()メソッドを使って配列を昇順にソートします。 Array.Sort(list); 続いて、Reverse()メソッドで配列を反転させることで、最終的に降順に並べ替えられた配列が得られます。 Array.Reverse(list); 以下のコードを実行して、1次元配列を降順に並べ替える動作を実際に確認してみましょう。 コード例 using System; namespace Demo { public class MyAp