C での 2D 配列のソート : 組み込み関数とカスタム実装
はじめに
C での多次元配列のソートは複雑な作業になる場合があります。この記事では、組み込み関数の機能を検討し、列の値に基づいて 2D 配列を効果的に並べ替えるためのカスタム実装を提供します。
組み込み関数
C は、多次元配列をソートするための限られた組み込み関数。 std::qsort 関数を使用すると、任意の型の固定サイズの配列を並べ替えることができます。ただし、複数列の配列を並べ替えるための直接的な機能は提供しません。
カスタム実装
複数列の並べ替えの場合、コンパレータ関数を使用したカスタム実装が可能です。活用されている。このアプローチでは、組み込みの std::sort 関数を調整する必要があります。この関数は、デフォルトで要素を昇順で処理します。
コンパレータ関数は 2 つの配列を入力として受け取り、目的の列値に基づいてそれらを比較します。あなたの場合、最初の列の値を比較することによって 2D 配列をソートしたいと考えています。 C の実装は次のとおりです。
<code class="cpp">int comparator(int const *lhs, int const *rhs) { return (lhs[0] < rhs[0]) ? -1 : ((rhs[0] < lhs[0]) ? 1 : (lhs[1] < rhs[1] ? -1 : ((rhs[1] < lhs[1] ? 1 : 0)))); }
このコンパレーターでは、3 項ステートメントをカスケードして最初の列の値を比較し、次に 2 番目の列の値を比較して関係を解消します。
使用法
コンパレータを使用して配列を並べ替えるには、 std::sort 関数を呼び出すことができます。引数として配列とコンパレータを使用します:
<code class="cpp">std::sort(std::begin(ar), std::end(ar), comparator);
Example
カスタム並べ替えを示す例は次のとおりです。実装:
<code class="cpp">#include <iostream> #include <algorithm> int ar[10][2] = { {20, 11}, {10, 20}, {39, 14}, {29, 15}, {22, 23} }; int main() { int comparator(int const *lhs, int const *rhs); // Sort the array std::sort(std::begin(ar), std::end(ar), comparator); // Display the sorted array for (int i = 0; i < 10; i++) { std::cout << ar[i][0] << " " << ar[i][1] << '\n'; } return 0; }</code>
出力:
10 20 20 11 22 23 29 15 39 14
結論
一方、C には専用の組み込み関数がありません。複数列配列のソート、コンパレータ関数を使用したカスタム実装により、効率的で柔軟なソリューションが提供されます。このアプローチにより、必要な並べ替え基準を指定し、特定の要件に基づいて並べ替え動作をカスタマイズできます。
以上がC で 2D 配列を列の値で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。