有几种排序算法,如插入排序、选择排序、冒泡排序等,这些算法在计算机科学教科书中经常讨论。给定一个整数或对象数组,有没有内置的Java 6语言API可以让我选择应用特定的排序算法来对数组进行排序,而不是重新发明这些轮子?如果没有内置到Java 6中,是否有提供此功能的开源库?它们是什么?
发布于 2011-07-25 23:46:42
Arrays.sort()方法在所有原始类型数组中使用快速排序。
排序算法是一种调整过的快速排序算法,改编自Jon L.Bentley和M.Douglas McIlroy的"Engineering a Sort Function",Software-Practice Experience,Vol.23(11)P.1249-1265(1993年11月)。该算法在许多数据集上提供了n*log(n)性能,这些数据集导致其他快速排序性能降级为二次性能。
Collections.sort()方法使用合并排序。此排序也用于[Arrays.sort(Object[])](http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html#sort(java.lang.Object[]%29)和Arrays.sort(T[], Comparator<? super T>)。
排序算法是一种改进的合并排序(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则省略合并)。该算法提供了有保证的n log(n)性能。此实现将指定的列表转储到一个数组中,对该数组进行排序,然后遍历该列表,从该数组中的相应位置重置每个元素。这避免了尝试就地对链表进行排序所导致的n2日志(N)性能。
发布于 2011-07-25 23:49:44
Arrays.sort(int[] a)使用调优的快速排序。
[Arrays.sort[Object[] a)](http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html#sort%28java.lang.Object%5B%5D%29)使用修改后的合并排序。
发布于 2011-07-25 23:45:42
你通常没有选择的余地(不管怎么说,使用内置的排序)。Collections类提供了一个sort方法,该方法应该足够高效,可以满足大多数需求。
https://stackoverflow.com/questions/6818683
复制相似问题