Couting Sort (Saymalı Sıralama) Algoritması

Selamün Aleyküm Arkadaşlar;

Saymalı sıralama algoritması verilerin aralığını kullanarak sıralama yapar. Saymalı sıralama algoritması Harold H. Seward tarafından 1954 yılında yazılmıştır.

Elimizde şu şekilde bir A dizisi olsun:

SnapCrab_No-0032

 

İlk önce dizideki en büyük değer bulunur.  Dizideki en büyük değer 7’dir. 7 + 1 uzunluğunda bir başka dizi tanımlanır. Biz bunu B dizisi olarak tanımlayalım. Sonra B dizisinin tüm değerleri 0 yapılır.

SnapCrab_No-0033

 

Sonra A dizisiyle aynı uzunlukta başka bir dizi tanımlanır. Biz bunu C dizisi olarak tanımlayalım.

SnapCrab_No-0034

 

Sonra A dizisi birinci elemanından itibaren seçilir. Birinci elemanın değeri B dizinde index numarasını gösterir. B dizisindeki veri +1 arttırılır.

SnapCrab_No-0035

 

Sonra B dizisine n = n + (n-1) uygulanır. Yani bir elemanın değeri bir önceki elemanın değeriyle toplanır ve elemana yazılır.

SnapCrab_No-0036

A dizisinin sondan itibaren elemanı seçilir. Değeri B dizisinin indeksini verir. B elemanının değerinin bir eksiği,  C dizisindeki indeksi verir. C dizisindeki (B elemanının değeri – 1) indeksine, seçilen elemanın değeri yazılır. B elemanının değeri 1 azaltılır.

SnapCrab_No-0037

 

Böylelikle A dizisindeki elemanlar, C dizisinde sıralanmış olur.

C# Kod yapısı da aşağıdaki gibidir.

Proje dosyasını buradan indirebilirsiniz.

 

Hayırlı günler, sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.