如何按第一个元素对数组数组进行排序?
你有一个数组数组,例如 [[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中文网其他相关文章!