【发布时间】:2011-01-23 17:25:57
【问题描述】:
我有一个包含 64 个结构的数组,其中包含大量数据(结构大约 128 个字节,因此需要重新排列 8192 个字节)。数组需要根据每个结构中的单个无符号字节进行排序。我的数据的一个有趣属性是,很可能会有很多重复的排序值——这意味着如果你去掉所有重复,数组可能只有 10 个唯一元素长,但这不是给定的。
排序后,我需要创建一个堆栈来存储每个唯一字节运行开始的大小和类型: 所以如果我最终得到排序值: 4,4,4,9,9,9,9,9,14,14 堆栈将是: (4,3), (9,5), (14,2)
我认为在这些条件下我可以执行一些不错的优化。如果我进行堆排序,我可以在排序时创建堆栈,但这会比 qsort 快,然后在后面构建堆栈吗?由于我使用的大型结构,任何排序算法会运行得更慢吗?由于我只比较字节,我可以进行任何优化吗?
顺便说一句:语言是 c++
谢谢。
【问题讨论】:
-
你会用什么做堆栈,自制的还是内置的?
-
我想要最快的,所以我想它会是一个使用固定缓冲区的简单自制的。
-
您需要实际排序还是只需要存储大小和类型的“堆栈”?
-
我需要对它们进行排序,但不稳定的排序也可以。