首頁 >後端開發 >C++ >如何在 C 中按每個子數組的第一個元素對數組數組進行排序?

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 01:05:03346瀏覽

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

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

給定一個數組數組,任務是根據以下數組條件對它們進行排序每個子數組的第一個元素。考慮一個像 [[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}};

  // Sort the indices based on the first item of each subarray
  std::sort(index, index + 3, [&](int n1, int n2) { return timeTable[n1][0] < timeTable[n2][0]; });

  // Iterate over the sorted indices and access the corresponding subarrays
  for (int i = 0; i < 3; ++i) {
    std::cout << "The index is " << index[i] << ". The data at this index is [";
    std::cout << timeTable[index[i]][0] << " " << timeTable[index[i]][1] << "]\n";
  }

  return 0;
}

在此程式碼片段中,我們建立一個索引數組並使用它對其進行排序自訂排序標準,用於比較索引n1和n2 處子數組的第一個元素。排序後,我們可以透過重新排序的索引數組來存取排序後的子數組。

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

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