c++ - SORT 整数数组 TAG 结构数组(或两个)

标签 c++ algorithm arrays sorting

因此,为了论证邮政编码,我们的想法是使用该结构的元素对大型 STRUCTURE 进行排序。

为简单起见,假设有两个数组,一个包含邮政编码的整数,另一个是更大的结构(3k 字节)数组。

使用快速排序对整数数组进行排序的速度相当快,但是标记结构数组比在整数数组交换元素时简单地交换元素要好一些。

在测试一个包含 3000 个元素的随机整数数组时,需要进行 12000 次交换才能完成排序。多次交换整个结构会降低性能,尤其是在元素很多的情况下。

理想情况下,我只对指针数组进行排序,但在这种情况下,我实际上必须返回一个排序的结构数组,而不是一个排序的指针数组。如果不出意外,这是对标记数组进行排序的练习。

一种方法是标记一个辅助整数数组,然后使用其中的顺序来打乱结构中的元素,从而只移动每个元素一次。

我在网上找不到太多帮助 http://rosettacode.org/wiki/Sorting_an_Array_of_Integers#C

对于优雅设计的建议将不胜感激。

最佳答案

如果你想避免交换开销,你可以尝试 Selection Sort .此排序算法将找到一个值并立即将其放入正确的位置,只执行一次交换,因此,我相信,交换次数尽可能少。

关于c++ - SORT 整数数组 TAG 结构数组(或两个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1238191/

相关文章:

c++ - 再生连接点法

python - 在 Python 中对算法进行排序的最快方法

c++ - 仅使用指针打印出数组中的所有其他字符

c++ - 如何在 C++ 中使用传入的值作为数组索引?

c++ - QChartView 和 QScatterSeries 覆盖 QPointF 的标签

java - 超对称线算法?

algorithm - 有 n 个人和 k 个目的地的图

python - 对部分 "sparse"numpy 数组的高效数学运算

arrays - 如何计算数组元素的运行总计?

c++ - operator== 作为 std::function 的默认值