【发布时间】:2013-09-08 16:07:21
【问题描述】:
Java 应用程序将大部分时间用于对某些键进行排序和删除重复项。
因此,必须选择适应的排序算法。
键是整数(大约 256 位,但不一定),数组大小在 1000 到 100000 个键之间。
输入数组由连续的键组组成。这些组已经排序并且很小(大约 10 个键)。
一个数组示例(3 组,32 位键):
0x01000000
0x01010000
0x01010100
0x01010101
0x01000000
0x01010000
0x01010100
0x01010102
0x01000000
0x01020000
0x01020200
0x01020203
排序和删除重复后:
0x01000000
0x01010000
0x01010100
0x01010101
0x01010102
0x01020000
0x01020200
0x01020203
有什么难的吗?任何想法 ?有链接吗?
谢谢
PS : 在查看了包括归并排序、基数排序、qui...
PPS:最后我分叉了 Java 遗留的合并排序,添加了过滤和排序组的概念。它提供了极大的加速。
【问题讨论】:
-
请分享您对此的一些想法。你有没有尝试过?
-
我们不知道你不知道什么。这个问题对我来说似乎很直接。你觉得棘手的是什么?
-
对 100,000 个整数进行排序应该很快。但什么是“256 位”整数?这些是大整数吗?
-
我测试了快速排序、tim 排序(由 Java 库提供)和基数排序。 Tim sort 提供了一些有趣的结果,但我想知道我是否可以做得更好。
-
我还测试了 Java 库提供的归并排序。这也比 tim sort 慢。