有问题的数组可能包含任何等于或大于零的整数,且数字是唯一的。数字必须按升序排列。
数组的大小通常小于100。 大多数数组已经排序。大多数情况下,我的意思是平均至少90%。
我发现了这个implementation of TimSort,但它不是原始值。自动装箱会带来很多开销。
性能至关重要,因为排序算法将被多次调用。
答案 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]
略快。