簡體   English   中英

什么是std :: sort()和std :: sort_heap()的內存復雜性?

[英]What's the memory complexity of std::sort() and std::sort_heap()?

在標題中 - std::sort()std::sort_heap()的內存復雜性是什么? (后者需要std::make_heap()所以我也想知道它的內存復雜性。)

我試過在這些網站上搜索: http//www.cplusplus.com/reference/ http://en.cppreference.com/w/但要么我錯過了,要么只提到時間的復雜性。 是否在任何地方指定了所述函數的內存復雜性(在C ++標准或其他文檔中)? 或者這可能是依賴於實現的?

對於std::sort()我在Cboard上找到了一個答案,它幾乎說:

實施質量問題。 不同的實現比其他實現更有效地使用內存。 除此之外,該標准允許對不同迭代器類別的std::sort進行特化,允許實現在幾個不同選項之間進行選擇,只要復雜性(時間)與需求相匹配即可。 給出的復雜性甚至不是時間,而是比較的數量。 實施可以執行N³交換操作。

大多數std::sort實現的內存開銷與遞歸深度和每個遞歸級別存儲在堆棧中的局部變量數有關。 std::sort的HP / Microsoft STL實現使用Quicksort直到/除非它檢測到遞歸級別變得太深,在這種情況下它會切換到堆排序。 如果大小很小,例如32或更小,那么它使用Insertionsort。

您可以在Wikipedia 頁面中查看算法的比較並估計內存復雜性。

同樣,我懷疑其他兩種算法屬於同一種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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