Source Code
もっとも単純で、もっとも遅いソートアルゴリズム「バブルソート」。
これに、ちょっとした改良を加えると劇的に早くなる。
それが[combsort (コムソート) ]
私はこいつが大好きだ!
***コムソートとは***
バブルソートが隣同士を順に比較・交換してゆくのに対し
コムソートでは、ある距離離れた要素を比較・交換する。
その距離は段階毎に一定の係数(通常は1.3)で割って短縮され、
距離の小さい所では11を起点とするように矯正するものを
コムソート11と呼ぶ。
***コムソートの長所***
仕組みが簡単でコード記述量もかなり少ない。
でありながら、
高度なロジックに匹敵する処理速度が得られる。
***コムソートの短所***
同じ数値の要素間に於いて、
ソート前と後で順序は保証されない。
(だが対策は簡単:StableCombSort)
実験的・経験的に発明された※1 経緯もあり、
数学的に厳密に計算量などを説明しづらい。
ので、「お固い」人には敬遠される向きもある。
※1 S.Lacy氏とR.Box氏により1991年に発表された。
1.3や11という数字も、実験による調整の結果。
***続きがあります***