C では、Java とは異なり、直接の組み込み関数はありません。特定の列値で 2D 配列を並べ替えることができます。ただし、この望ましい並べ替え動作を実現するには、さまざまなアプローチを使用できます。
1 つの方法では、汎用の並べ替えアルゴリズムである std::qsort 関数を利用します。カスタム コンパレータ関数を定義すると、列の値に基づいて並べ替えロジックを制御できます。実装例を次に示します。
<code class="cpp">#include <iostream> #include <algorithm> int compareArrayColumns(int **lhs, int **rhs) { return (*lhs)[0] < (*rhs)[0]; } int main() { int arr[][2] = { {20, 11}, {10, 20}, {39, 14}, {29, 15}, {22, 23} }; std::qsort(arr, 5, sizeof(*arr), (int (*)(const void *, const void *))compareArrayColumns); for (int i = 0; i < 5; ++i) { std::cout << arr[i][0] << " " << arr[i][1] << std::endl; } return 0; }</code>
このコードでは、compareArrayColumns 関数を使用して、配列の各行の最初の列の値を比較します。並べ替えは std::qsort 関数を使用して実行され、並べ替えられた 2D 配列が出力されます。
もう 1 つのアプローチには、目的のロジックを実装するカスタム並べ替え関数の作成が含まれます。バブル ソートを使用した実装例を次に示します。
<code class="cpp">#include <iostream> void bubbleSortByColumn(int arr[][2], int size) { for (int i = 0; i < size; ++i) { for (int j = 0; j < size - 1; ++j) { if (arr[j][0] > arr[j + 1][0]) { int temp[2]; temp[0] = arr[j][0]; temp[1] = arr[j][1]; arr[j][0] = arr[j + 1][0]; arr[j][1] = arr[j + 1][1]; arr[j + 1][0] = temp[0]; arr[j + 1][1] = temp[1]; } } } } int main() { int arr[][2] = { {20, 11}, {10, 20}, {39, 14}, {29, 15}, {22, 23} }; int size = sizeof(arr) / sizeof(arr[0]); bubbleSortByColumn(arr, size); for (int i = 0; i < size; ++i) { std::cout << arr[i][0] << " " << arr[i][1] << std::endl; } return 0; }</code>
このコードでは、 bubbleSortByColumn 関数は、配列を反復処理し、最初の列の値に基づいて行を交換する単純なバブル ソート アルゴリズムを実装します。ソートされた 2D 配列が出力されます。
アプローチの選択は、アプリケーションの特定の要件とパフォーマンスの考慮事項によって異なります。
以上がC で列の値によって 2D 配列を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。