ホームページ  >  記事  >  バックエンド開発  >  qsort() を使用して C で 2D 配列をソートするには?

qsort() を使用して C で 2D 配列をソートするには?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-05 06:53:02370ブラウズ

How to Sort a 2D Array in C   Using qsort()?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。