ホームページ >バックエンド開発 >C++ >C で配列の配列を最初の要素で並べ替えるにはどうすればよいですか?

C で配列の配列を最初の要素で並べ替えるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-21 19:05:13999ブラウズ

How to Sort an Array of Arrays by the First Element in C  ?

最初の要素で配列の配列を並べ替える方法

[[4, 204 のような配列の配列があるとします。 ]、[10, 39]、[1, 500]]。部分配列の最初の要素で並べ替えて、[[1, 500], [4, 204], [10, 39]] を取得したいとします。 C でそれを行う方法は次のとおりです。

アプローチ: 配列の代わりにインデックスを並べ替える

配列自体を並べ替えるのではなく、以下を指すインデックスの配列を並べ替えることができます。元の配列。この方法は、各サブ配列に大量のデータが含まれる大規模な配列の場合、または元の順序を保持する必要がある場合に、より効率的です。

ステップ 1: インデックス配列を作成する

index という名前のインデックスの配列を初期化します。インデックスの範囲は 0 から n-1 で、n はインデックスの数です。 subarrays.

ステップ 2: 並べ替え述語を定義する

インデックス配列を使用して部分配列の最初の要素を比較する並べ替え述語を作成します。インデックス n1 の部分配列の最初の要素がインデックス n2 の要素より小さい場合、述語は true を返す必要があります。

bool compareFirstElement(int n1, int n2) {
  return timeTable[n1][0] < timeTable[n2][0];
}

ステップ 3: インデックス配列を並べ替える

std::sort 関数と定義された述語を使用してインデックス配列を並べ替えます。これにより、サブ配列の最初の要素に基づいてインデックスが昇順に並べ替えられます。

std::sort(index, index + 3, compareFirstElement);

ステップ 4: 並べ替えられたインデックスを使用してデータにアクセスする

ソートされたデータにアクセスし、ソートされたインデックス配列を使用して timeTable 内のサブ配列をポイントします。 array.

for (int i = 0; i < 3; ++i) {
  std::cout << "The index is " << index[i] << ".  The data at this index is  [" << 
                 timeTable[index[i]][0] << " " << timeTable[index[i]][1] << "]\n";
}

ライブ例:

[ライブ例](https://wandbox.org/permlink/sXTyuT2fubLi4j7i)

注: このアプローチは、オブジェクトの配列を並べ替えたり、並べ替え可能なデータを含む構造体。

以上がC で配列の配列を最初の要素で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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