首页 >后端开发 >C++ >如何在 C 中按第一个元素对数组数组进行排序?

如何在 C 中按第一个元素对数组数组进行排序?

Barbara Streisand
Barbara Streisand原创
2024-11-21 19:05:13968浏览

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

如何按第一个元素对数组数组进行排序?

你有一个数组数组,例如 [[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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn