簡體   English   中英

IComparer中.net使用哪種排序算法

[英]Which sorting algorithm is used by .net in IComparer

當我們在類中實現IComparer時,有沒有人知道.net使用了哪種排序算法?

QuickSort似乎就是這樣。

IComparer的文檔說

此接口與Array.SortArray.BinarySearch方法結合使用。

Array.Sort文檔說

此方法使用QuickSort算法。 此實現執行不穩定的排序; 也就是說,如果兩個元素相等,則可能不會保留它們的順序。 相反,穩定的排序保留了相等元素的順序。

根據MSDN ,.NET使用QuickSort。 順便說一句,該方法絕對不依賴於比較器(只要它是基於比較的),為什么.NET因此使用不同的方法取決於您是否提供自定義比較器?

目前的文檔說它使用了一種類型的Introsort ,一種混合​​排序算法:

是這樣的:

  1. 如果分區大小少於16個元素,則使用插入排序算法

  2. 如果分區數超過2 * LogN,其中N是輸入數組的范圍,則它使用Heapsort算法。

  3. 否則,它使用Quicksort算法。

    來源於此

暫無
暫無

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

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