簡體   English   中英

java.util.Collections.sort() 方法的時間復雜度是多少?

[英]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>,並添加了一些我發現的更多相關信息。

如果您提供自定義比較器,則使用修改版本的合並排序(也稱為timsort<\/code> )。 該實現已從python 的列表排序中<\/a>借用。

在最好的情況下,只需要 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM