在Java中排序,时间复杂度最小

时间:2014-08-18 16:25:28

标签: java algorithm sorting

我是java新手我必须对10 ^ 6的数组进行排序。什么是java中可用的sort method的时间复杂度。应该使用哪种排序算法?

3 个答案:

答案 0 :(得分:4)

假设您对数据没有其他了解并且必须使用通用排序方法,那么最佳的理论就地排序算法是O(n * log(n))。 Arrays.sort方法应该使用其中之一,并且是没有更多信息的最佳选择。

如果您愿意使用大量内存,则可以使用非基础类型,例如基数或计数。这些可以比n * log(n)更快,有些和O(n)一样快,但可能使用O(n)或更差的内存。如果您了解具有特殊属性的数据(例如它几乎已经被排序),则插入排序或类似算法可能比O(n * log(n))更快,而不使用内存,但没有更多信息,其中一个可以不建议。

答案 1 :(得分:0)

有许多不同的排序算法,每个算法都有自己的上下行。据我所知,没有"排序算法集合"在Java中,您可以使用它,因此最好自己实现该算法。

这是一个list of sorting algorighms,其中包含一个属性表。哪一个最适合您取决于给定的资源和应用程序的要求。

答案 2 :(得分:0)

取决于要排序的数据,您可以选择排序算法,但如果您不知道数据类型,则只需使用Arrays.sort() O(n lg(n))。