ホームページ  >  記事  >  バックエンド開発  >  組み込み関数またはカスタム メソッドを使用して C で 2D 配列を並べ替えるにはどうすればよいですか?

組み込み関数またはカスタム メソッドを使用して C で 2D 配列を並べ替えるにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-06 04:06:02817ブラウズ

How do I sort a 2D array in C   using built-in functions or custom methods?

組み込み関数または代替メソッドを使用した C での 2D 配列のソート

C での 2D 配列のソートには、次のような独特の課題があります。 std::sort() などの組み込み関数は通常、1D 配列用に設計されています。ただし、最初の列の値のみを比較するなど、特定の条件に基づいて 2D 配列を並べ替えたい場合があります。

std::qsort の使用

C には複数列の並べ替えのための直接の組み込み関数がありませんが、 std::qsort() は多用途のソリューションを提供します。この関数は、配列へのポインター、配列のサイズ、配列内の要素のサイズ、および比較関数を受け取ります。カスタム比較関数を提供すると、特定の配列要素に基づいて並べ替え基準を指定できます。

カスタム並べ替え用の比較関数

比較関数は整数の結果を返す必要があります。 2 つの配列要素の比較に基づきます。 2D 配列の場合は、ポインター演算を使用して個々の要素にアクセスする必要があります。次の例を考えてみましょう。

<code class="cpp">int qsort_compare(const void *arg1, const void *arg2) {
  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))));
}

この比較関数は、最初の要素 (最初の列の値に相当) を比較し、結果に基づいて適切な順序を返します。

実装例

std::qsort() とカスタム比較関数を組み合わせると、次のように C で 2D 配列を並べ替えることができます。

<code class="cpp">#include <iostream>
#include <algorithm>

using namespace std;

int main() {
  int ar[5][2] = {
    {20, 11},
    {10, 20},
    {39, 14},
    {29, 15},
    {22, 23}
  };

  qsort(ar, 5, sizeof(*ar), qsort_compare);

  cout << "Sorted 2D Array:" << endl;
  for (int i = 0; i < 5; i++) {
    cout << ar[i][0] << " " << ar[i][1] << endl;
  }

  return 0;
}</code>

出力:

Sorted 2D Array:
10 20
20 11
22 23
29 15
39 14

このメソッドは、カスタム比較関数の作成と使用が必要ですが、C で 2D 配列を並べ替えるための包括的かつ効率的なソリューションを提供します。

以上が組み込み関数またはカスタム メソッドを使用して C で 2D 配列を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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