我是java新手我必须对10 ^ 6的数组进行排序。什么是java中可用的sort method
的时间复杂度。应该使用哪种排序算法?
答案 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))。