[英]What is the time complexity of java.util.Collections.sort() method?
我寫了以下課程:
public class SortingObjectsWithAngleField implements Comparator<Point> {
public int compare(Point p1, Point p2) {
double delta = p1.getAngle() - p2.getAngle();
if(delta == 0.00001)
return 0;
return (delta > 0.00001) ? 1 : -1;
}
}
然后,在我的main()
方法中,我創建了一個List
,我向其中添加了一些具有“X”和“角度”字段的對象。
然后我使用:
Collections.sort(list, new SortingObjectsWithAngleField());
這種排序方法的復雜性是多少?
您本可以閱讀有關 Collections sort 的文檔,但這里是為您准備的:
排序算法是經過修改的合並排序(如果低子列表中的最高元素小於高子列表中的最低元素,則忽略合並)。 該算法提供有保證的 n log(n) 性能。
您的 Comparator 不會改變這種復雜性,除非您對其中的集合執行任何循環操作,而您沒有這樣做。
您應該在 API 中找到它: n log(n)<\/a> 。
"取自 Collections.sort -
排序算法是經過修改的合並排序(如果低子列表中的最高元素小於高子列表中的最低元素,則忽略合並)。 該算法提供有保證的 n*log(n) 性能
每個人都說明了API 文檔<\/a>,並添加了一些我發現的更多相關信息。
如果您提供自定義比較器,則使用修改版本的合並排序(也稱為
該實現已從python 的列表排序中<\/a>借用。timsort<\/code> )。
在最好的情況下,只需要 n-1 次比較,所以
best case is O(n)<\/code> ,
guaranteed performance in all the cases is O(n.lg(n))<\/code>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.