我現在正在處理合並排序的受侵害版本。我用C++和C#實現了它。然後分別將它們與stl sort和array.sort()算法進行比較。在C++中,我得到了相等(有時更好)的結果。但在C#中,我不得不使用不安全的代碼來使用指針。在這裏,性能與默認排序並無太大的可比性。所以,我想知道 -
1.在stl和.net基類庫中使用哪些算法?(更好的鏈接)
2.不安全的代碼是否存在性能問題?
3.對於測量新算法性能的任何建議?在stl和.net基本庫默認搜索中使用哪種排序算法?
0
A
回答
6
.NET使用Quicksort的變體(Sedgewick的中位數爲3的Quicksort)。除非你是排序專家,否則如果你可以擊敗內置的對各種數據進行排序(包括隨機,已經排序和反向排序的排序),我會感到驚訝。採用不安全的代碼通常是一個壞主意......
1
STL排序可能取決於實現,但(as wikipedia says)它通常是introsort,quicksort和heapsort的組合。它必須具有O(n log n)比較的平均複雜度。
0
.NET使用QuickSort。您可以使用Reflector查看System.Collections.Generic.ArraySortHelper中的實現
在大多數情況下,即使最差情況下執行時間較長,QuickSort的運行速度也會比MergeSort快。標準QuickSort也有一些改進,我認爲,但我不確定是否使用了這些改進。
我似乎還記得使用QuickSort的STL,但我並不完全確定。
+0
STL-sort取決於實現 - 通常有許多algortihms相結合(IntroSort = QuickSort + HeapSort + InsertionSort) – Dario 2009-06-07 10:40:59
相關問題
- 1. STL的列表使用哪種排序算法:sort()?
- 2. 微軟的STL :: list :: sort()使用哪種排序算法?
- 3. 在C++中使用排序算法STL
- 4. MySQL使用哪種排序算法?
- 5. 使用哪種Multiple-Criteria排序算法?
- 6. 搜索後不保留搜索排序,返回默認排序
- 7. 推力::排序中使用哪種排序算法?
- 8. 搜索,排序和圖算法問題
- 9. 哪種搜索算法更喜歡?
- 10. mysql使用哪種算法搜索表中的一行?
- 11. PHP使用哪種哈希算法session.hash_function默認混合
- 12. .net搜索算法?
- 13. 如何使用STL容器實現庫排序算法?
- 14. 這是哪種排序算法?
- 15. 哪種排序算法是這樣的?
- 16. 哪種排序算法更快?
- 17. 在Java中搜索和排序算法的高效實現
- 18. 擔保對STL並行搜索算法
- 19. SortBy在Spark中使用哪種算法?
- 20. 使用哪種算法進行字母排序?
- 21. UserPrincipal.FindByIdentity使用哪種默認IdentityType類型?
- 22. 不使用默認算法排序字符串的向量
- 23. 基於距離的搜索和排序
- 24. STL排序算法需要幫助
- 25. 默認FB搜索
- 26. 基本基數排序算法中可以進行哪些增強?
- 27. 使用php和mysql高級排序和搜索mysql數據庫
- 28. 在基本的mysql搜索引擎中排序相關
- 29. 使用LINQ搜索和排序IEumerable
- 30. 使用Ajax搜索和排序表格
downvoters應該留言..... – 2015-08-25 20:47:20