HSPでコムソートをやってみました。かなり簡潔なソースになってると思います。
data = 51,62,22,9,2,34,6,21,13,98 h = int(double.length(data) /1.3) repeat repeat if cnt+h >= length(data) : break if data(cnt+h) < data(cnt) { v1 = data(cnt) data(cnt) = data(cnt+h) data(cnt+h) = v1 } loop if h=1 { break } else { h = int(double.h /1.3) } loop foreach data mes data.cnt loop
WikipediaのサンプルをHSPに移植した感じです。
安定ソートではないですが、計算時間がO(n log n)と高速です。