如何依照第一個元素對陣列陣列進行排序?
你有一個陣列數組,例如 [[4, 204 ]、[10, 39]、[1, 500]]。您希望按子數組的第一個元素對它們進行排序以獲得 [[1, 500], [4, 204], [10, 39]]。以下是在C 中執行此操作的方法:
方法:對索引進行排序而不是數組
您可以對指向的索引數組進行排序,而不是對數組本身進行排序原始數組。對於每個子數組包含大量資料或需要保留原始順序的大型數組,此方法更有效。
第1 步:建立索引數組
初始化一個名為index的索引數組,索引範圍為0到n-1,其中n為索引的個數子數組。
步驟 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中的子數組數組。
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中文網其他相關文章!