我刚开始使用java,我必须对10^6的数组进行排序。sort method的时间复杂度是多少,这在java中是可用的。应该使用哪种排序算法?
发布于 2014-08-18 16:30:29
假设您对数据没有其他知识,并且必须使用泛型排序方法,那么最佳的理论排序算法是O(n*log(n))。Arrays.sort方法应该使用其中之一,并且是您最好的选择,没有更多的信息。
如果您愿意使用大量内存,您可以使用非本地排序,如基数或计数。这些可以比n*log(n)更快,有些可以像O(n)那样快,但可能使用O(n)或更糟的内存。如果您了解具有特殊属性的数据(例如,它几乎已经被排序),则插入排序或类似的算法可能比O(n*log(n))更快,而无需使用内存,但没有更多的信息,其中的一种是无法建议的。
发布于 2014-08-18 17:23:39
有许多不同的排序算法,每一个都有各自的优缺点。据我所知,Java中没有可以使用的“排序算法集合”,所以最好自己实现该算法。
下面是一个带有属性表的排序算法列表。哪一个最适合您,取决于所提供的资源和应用程序的需求。
发布于 2014-08-18 17:33:46
取决于要排序的数据,您可以选择排序算法,但是如果您不知道数据的类型,可以简单地使用Arrays.sort() O(n (N))。
https://stackoverflow.com/questions/25367843
复制相似问题