在 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, [&](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"; } }
在此示例中:
注意: 这个排序技术不仅适用于子数组的数组,还适用于需要根据其中一个数组的数据并行排序多个数组的场景数组。
以上是如何在 C 中按第一个元素对子数组数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!