ホームページ  >  記事  >  バックエンド開発  >  C で部分配列の配列を最初の要素でソートするにはどうすればよいですか?

C で部分配列の配列を最初の要素でソートするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-23 00:18:12852ブラウズ

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

C の部分配列の最初の項目による配列の並べ替え

元の配列は 2 つの要素を持つ部分配列で構成されます: 例: [[4, 204] 、[10, 39]、[1, 500]]。目標は、各部分配列の最初の要素に基づいてこれらの配列を並べ替えることです: [[1, 500], [4, 204], [10, 39]]。

並べ替え手法

興味深いことに、元の配列自体を操作する必要はありません。代わりに、元の配列内の部分配列を指すインデックスの配列をソートし、ソートされたインデックスを使用してソートされた要素にアクセスする方が良い方法です。

この手法の利点

元の配列の代わりにインデックスをソートすると、次の場合に有利です。

  • 元の配列配列要素のサイズが大きいです。
  • 配列の元の順序を保持する必要があります。
  • 元の配列は扱いにくいか、並べ替えアルゴリズムで効率的に操作するのが不可能です。

実装例

次の例を考えてみましょうコード:

#include <algorithm>
#include <iostream>

int main() {
    int index[3] = {0, 1, 2};
    int timeTable[3][2] = {{4, 204}, {10, 39}, {1, 500}};
    std::sort(index, index + 3, [&amp;](int n1, int n2) {
        return timeTable[n1][0] < timeTable[n2][0];
    });

    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";
    }
}

この例:

  • index は、値 0、1、2 で初期化されたインデックスの配列です。
  • timeTable はオリジナルです。サブ配列の配列。
  • std::sort は、サブ配列の最初の要素に基づいてインデックスをソートするために使用されます。 timeTable 内の対応するサブ配列。
  • インデックスを並べ替えた後、for ループに示すように、並べ替えられたインデックス配列を使用して並べ替えられたサブ配列にアクセスできます。

注: このソート手法は、サブ配列の配列だけでなく、1 つの配列のデータに基づいて複数の配列を並行してソートする必要があるシナリオにも適用できます。配列の

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

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