首頁  >  文章  >  後端開發  >  如何在 C 中依第一個元素對子數組數組進行排序?

如何在 C 中依第一個元素對子數組數組進行排序?

Barbara Streisand
Barbara Streisand原創
2024-11-23 00:18:12853瀏覽

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

在C 語言中按子數組中的第一項對數組進行排序

原始數組由具有兩個元素的子數組組成:例如[[4, 204] 、[10, 39]、[1, 500]]。目標是根據每個子數組的第一個元素對這些數組進行排序:[[1, 500], [4, 204], [10, 39]]。

排序技術

有趣的是,沒有必要操作原始陣列本身。相反,更好的方法是對指向原始數組中子數組的索引數組進行排序,然後使用排序後的索引來存取排序後的元素。

此技術的好處

在以下情況下對索引而不是原始數組進行排序是有利的:

  • 原始數組元素是尺寸較大。
  • 需要保留陣列的原始順序。
  • 原始陣列在排序演算法中很難或無法有效操作。

範例實作

考慮以下範例code:

#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 迴圈所示。 注意: 這個排序技術不僅適用於子數組的數組,也適用於需要根據其中一個數組的資料對多個數組進行並行排序的場景數組。

以上是如何在 C 中依第一個元素對子數組數組進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn