
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)と高速です。