我需要一个比 O(n log n) 更快的 .Net Doubles 的稳定排序算法。
我在考虑基数排序。但是,如果我理解正确,它的性能是 O(nk),并且由于我正在对 Doubles 进行排序,k = 8。如果 n > 2980,这只会比 O(n log n) 排序(即 QuickSort)更快。(这是正确的吗??)在我的情况下,n 通常会在 500 或 1000 左右,但有时也会大得多。(是的,这种排序发生得非常频繁,并且基于分析分析,它的速度确实很重要)。
那么我应该坚持使用 QuickSort 还是有其他更快的选择?桶排序呢?我正在寻找 C# 或 VB.NET 中的良好实现。
编辑:我目前正在使用稳定的 QuickSort 实现。
编辑:有关浮点值,请参阅 Radix 的此实现:http: //codercorner.com/RadixSortRevisited.htm。据此,双打的 k 为 9。