2009/11/10

C#でin place merge sortを書いてみたらかなり遅かった

C#で簡単に使いまわせる安定なソートを用意しておこうと思ってIn place stable Sort (merge sort)を参考に書いてみたらかなり遅かった。
In place stable Sort (merge sort)のソースの不自然さが気になったからSTLport_algo.cとか_algobase.cとかも参考にした。
Array.Sortの数十倍時間がかかるとか、これじゃあまり使う気にならない。
何かミスっているのかもしれないし、in placeでなければもうちょっとましかもしれない。明日もう少し調べてみる。
size: 1000
merge sort: 37580 (30.34)
Array.Sort: 1238 (1.00)
size: 10000
merge sort: 506318 (41.50)
Array.Sort: 12199 (1.00)
size: 100000
merge sort: 7170923 (50.21)
Array.Sort: 142813 (1.00)
size: 1000000
merge sort: 97304833 (60.94)
Array.Sort: 1596662 (1.00)
ksksts / junk / source — bitbucket.org

0 件のコメント: