O(n log n) よりも高速な .Net Doubles 用の安定した並べ替えアルゴリズムが必要です。
基数ソートを考えています。しかし、私が正しく理解している場合、パフォーマンスは O(nk) であり、Double をソートしているため、k = 8 です。n > 2980 の場合、これは O(n log n) ソート (つまり QuickSort) よりも高速になります。 (これは正しいですか??) 私の場合、n はより一般的には 500 または 1000 前後になりますが、それよりもはるかに大きい場合もあります。(そして、はい、この並べ替えは非常に頻繁に行われ、プロファイリング分析に基づいてその速度が重要になります)。
では、QuickSort を使い続ける必要がありますか、それとも他のより高速な代替手段はありますか? バケットソートはどうですか?C# または VB.NET での適切な実装を探しています。
編集:現在、安定した QuickSort 実装を使用しています。
編集: 浮動小数点値については、この Radix の実装を参照してください: http://codercorner.com/RadixSortRevisited.htm。これによると、k は Doubles の場合は 9 になります。