在Java中对部分排序的原始整数数组进行排序

时间:2015-07-04 16:17:29

标签: java arrays algorithm sorting integer

有问题的数组可能包含任何等于或大于零的整数,且数字是唯一的。数字必须按升序排列。

数组的大小通常小于100。 大多数数组已经排序。大多数情况下,我的意思是平均至少90%。

我发现了这个implementation of TimSort,但它不是原始值。自动装箱会带来很多开销。

性能至关重要,因为排序算法将被多次调用。

2 个答案:

答案 0 :(得分:0)

使用Arrays.sort

int[] array = /* something */;
Arrays.sort(array);

只有一行,这显然是非常简单易用且非常易读。在编写代码时,这应该是您的首要任务。它也会非常快,因为标准库的编写者在性能上付出了很多努力,特别是与排序算法有关。

使用Arrays.sort的唯一情况是,如果您几乎完全完成了系统,请仔细对其进行分析,并确定对您的系统进行排序的部分代码数组是瓶颈。即便如此,您仍然可能无法编写自己的排序算法,其表现明显更好。

答案 1 :(得分:0)

取决于“几乎排序”的含义。 Insertion Sort是一个非常有效的算法,如果数组几乎排序(排序时的线性复杂度),但性能可能会有所不同,具体取决于离群值是否接近或远离其最终排序位置。例如,[1,2,3,4,6,5,7,8,9]的排序速度会比[1,3,4,5,6,7,8,9,2]略快。