首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 6中提供了哪些不同的排序算法?

Java 6中提供了哪些不同的排序算法?
EN

Stack Overflow用户
提问于 2011-07-25 23:42:59
回答 3查看 25.1K关注 0票数 8

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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)性能。

票数 26
EN

Stack Overflow用户

发布于 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)使用修改后的合并排序。

票数 6
EN

Stack Overflow用户

发布于 2011-07-25 23:45:42

你通常没有选择的余地(不管怎么说,使用内置的排序)。Collections类提供了一个sort方法,该方法应该足够高效,可以满足大多数需求。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6818683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档