在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中文網其他相關文章!