En basit sıralama algoritması

En basit sıralama algoritması hangisidir? Okullarda genel olarak bubble-sort gösteriyorlar, fakat ben insertion sort’u tercih ediyordum. Bugün ise gnome-sort diye bir algoritmayla karşılaştım. Neredeyse insertion-sort kadar hızlı çalışıyor, ve anlaması hem bubble-sort’tan hem de insertion-sort’tan daha kolay.

Verdiğim linkte c ile örnek bir kod yazılmış, ruby ile yazmak gerekirse de şöyle bir şeyler oluyor:

1
2
3
4
5
6
7
8
9
10
def gnomesort!(a)
    i=1
    while i
        i+=1  if a[i-1]<=a[i]
        else
            a[i], a[i-1] = a[i-1], a[i]
            i-=1 if i>1
        end
    end
end

ruby’deki a,b=b,a yöntemi ne kadar müthiş değil mi? increment ve decrement operatörlerinin eksikliği ise hemen göze çarpıyor.


Etiketler: , , , , ,