Java 6中有哪些不同的排序算法?

时间:2011-07-25 15:42:59

标签: java algorithm sorting

有几种排序算法,如计算机科学教科书中经常讨论的插入排序,选择排序,冒泡排序等。给定一个整数或对象数组,是否有内置的Java 6语言API,让我选择应用特定的排序算法来排序数组,而不是重新重新发明这些轮子?如果没有内置到Java 6中,是否有开源库可以产生这种功能,它们是什么?

3 个答案:

答案 0 :(得分:25)

Arrays.sort()方法在所有基本类型数组中使用快速排序。

  

排序算法是一个经过调整的快速排序,改编自Jon L. Bentley和M. Douglas McIlroy的“Engineering a Sort Function”,Software-Practice and Experience,Vol。 23(11)P。1249-1265(1993年11月)。该算法在许多数据集上提供n * log(n)性能,导致其他快捷方式降级为二次性能。

Collections.sort()方法使用合并排序。此类也用于Arrays.sort(Object[])Arrays.sort(T[], Comparator<? super T>)

  

排序算法是修改后的mergesort(如果低子列表中的最高元素小于高子列表中的最低元素,则省略合并)。该算法提供有保证的n log(n)性能。此实现将指定的列表转储到数组中,对数组进行排序,并迭代列表,从数组中的相应位置重置每个元素。这样可以避免尝试对链接列表进行排序所导致的n2 log(n)性能。

答案 1 :(得分:6)

Arrays.sort(int[] a)使用经过调整的快速排序。

Arrays.sort[Object[] a)使用修改后的mergesort。

答案 2 :(得分:3)

您通常无法选择(无论如何都使用内置排序)。 Collections类提供了sort方法,该方法应该足以满足大多数需求。