qsort() を使用した C での 2D 配列のソート
2D 配列をソートするタスクに直面した場合、ビルドされた-in はプロセスを簡素化する関数です。 C では、 qsort() 関数がこの目的のための強力なツールとして際立っています。対応する sort() とは異なり、qsort は固定配列の複数列の並べ替えの処理に優れています。
qsort() の比較関数は、要素を効果的に比較するために一連の 3 項ステートメントを利用する独自のアプローチを採用しています。その結果、特定の列値に基づいて配列の並べ替えを適切に処理するアルゴリズムが得られます。
次の例を考えてみましょう。2D 配列にはランダム データが入力されており、最初の列に基づいて並べ替えが必要です。
<code class="cpp">#include <iostream> #include <random> #include <algorithm> int main() { int ar[10][2]; // Populate array with random data std::random_device rd; std::default_random_engine rng(rd()); std::uniform_int_distribution<> dist(1, 20); std::for_each(std::begin(ar), std::end(ar), [&](int(&ar)[2]) { ar[0] = dist(rng); ar[1] = dist(rng); }); // Sort the array std::qsort(ar, 10, sizeof(*ar), [](const void *arg1, const void *arg2) -> int { int const *lhs = static_cast<int const *>(arg1); int const *rhs = static_cast<int const *>(arg2); return (lhs[0] < rhs[0]) ? -1 : ((rhs[0] < lhs[0]) ? 1 : (lhs[1] < rhs[1] ? -1 : ((rhs[1] < lhs[1] ? 1 : 0)))); }); // Display sorted array std::for_each(std::begin(ar), std::end(ar), [](const int(&ar)[2]) { std::cout << ar[0] << ',' << ar[1] << '\n'; }); return 0; }</code>
このサンプルでは、コンパレーターは、目的の並べ替えを達成するために最初の列の値が注意深く比較されることを保証します。 qsort() を活用し、特定のニーズに合わせてコンパレータを調整することで、C で 2D 配列を効率的に並べ替えることができ、データ操作が簡単になります。
以上がqsort() を使用して C で 2D 配列をソートするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。