Tarak Sıralaması, ilk defa 1991 yılının Nisan ayında Stephen Lacey ve Richard Box tarafından Byte dergisinde duyurulmuş yalın bir sıralama algoritmasıdır. Kendisinden önce duyurulmuş kabarcık sıralaması algoritmasından başarılıdır ve karmaşıklıkta hızlı sıralama algoritmasıyla yarışır. Algoritmanın ana fikri listenin sonundaki küçük değerli öğelerin sayısını azaltmaktır. Kabarcık sıralaması algoritmasında sıralanacak listenin sonundaki küçük değerli öğelerin varlığı algoritmayı çok yavaşlattığı için tarak sıralamasında bu değerlerin sayısının azaltılması yoluna gidilmiştir.
Kabarcık sıralaması algoritmasında iki öğe karşılaştırıldığında aralarındaki mesafe her zaman 1'dir. Başka bir deyişle, kabarcık sıralaması her zaman ardışık iki değeri karşılaştırır. Taraf sıralaması ise bunun aksine aralarındaki mesafe birden çok daha fazla olan öğeleri karşılaştırabilir. (Kabuk Sıralaması da aynı düşünceyle tasarlanmıştır ancak kabuk sıralaması kabarcık sıralamasının değil seçmeli sıralamanın bir türevidir.)
Sözde Kodu
function combsort11(array input) gap := input.size //öğeler arasındaki aralığın başlangıç boyutunu belirle loop until gap <= 1 or swaps = 0 //yeni bir tarama için aralığın boyutunu güncelle if gap > 1 gap := gap / 1.3 if gap = 10 or gap = 9 gap := 11 end if end if
i := 0 swaps := 0 // Açıklama için kabarcık sıralamasına bakınız
// giriş listesinin üzerinden tek bir "tarama" loop until i + gap >= array.size //Benzer yaklaşım için kabuk sıralamasına bakınız if array[i] > array[i+gap] (array[i], array[i+gap]) swaps := 1 // Aritmetik taşma düzeltmesi için end if i := i + 1 end loop
end loop end function
C
void comb_sort(int *input, size_t size) { const float shrink = 1.3f; int swap; size_t i, gap = size; bool swapped = false; while ((gap > 1) || swapped) { if (gap > 1) { gap = (size_t)((float)gap / shrink); } swapped = false; for (i = 0; gap + i < size; ++i) { if (input[i] - input[i + gap] > 0) { swap = input[i]; input[i] = input[i + gap]; input[i + gap] = swap; swapped = true; } } } }
Diğer Sıralama Algoritmaları
Yazılım ile ilgili bu madde seviyesindedir. Madde içeriğini genişleterek Vikipedi'ye katkı sağlayabilirsiniz. |
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Tarak Siralamasi ilk defa 1991 yilinin Nisan ayinda Stephen Lacey ve Richard Box tarafindan Byte dergisinde duyurulmus yalin bir siralama algoritmasidir Kendisinden once duyurulmus kabarcik siralamasi algoritmasindan basarilidir ve karmasiklikta hizli siralama algoritmasiyla yarisir Algoritmanin ana fikri listenin sonundaki kucuk degerli ogelerin sayisini azaltmaktir Kabarcik siralamasi algoritmasinda siralanacak listenin sonundaki kucuk degerli ogelerin varligi algoritmayi cok yavaslattigi icin tarak siralamasinda bu degerlerin sayisinin azaltilmasi yoluna gidilmistir Tarak siralama hesaplama formulu Kabarcik siralamasi algoritmasinda iki oge karsilastirildiginda aralarindaki mesafe her zaman 1 dir Baska bir deyisle kabarcik siralamasi her zaman ardisik iki degeri karsilastirir Taraf siralamasi ise bunun aksine aralarindaki mesafe birden cok daha fazla olan ogeleri karsilastirabilir Kabuk Siralamasi da ayni dusunceyle tasarlanmistir ancak kabuk siralamasi kabarcik siralamasinin degil secmeli siralamanin bir turevidir Sozde Kodufunction combsort11 array input gap input size ogeler arasindaki araligin baslangic boyutunu belirle loop until gap lt 1 or swaps 0 yeni bir tarama icin araligin boyutunu guncelle if gap gt 1 gap gap 1 3 if gap 10 or gap 9 gap 11 end if end if i 0 swaps 0 Aciklama icin kabarcik siralamasina bakiniz giris listesinin uzerinden tek bir tarama loop until i gap gt array size Benzer yaklasim icin kabuk siralamasina bakiniz if array i gt array i gap array i array i gap swaps 1 Aritmetik tasma duzeltmesi icin end if i i 1 end loop end loop end function C void comb sort int input size t size const float shrink 1 3f int swap size t i gap size bool swapped false while gap gt 1 swapped if gap gt 1 gap size t float gap shrink swapped false for i 0 gap i lt size i if input i input i gap gt 0 swap input i input i input i gap input i gap swap swapped true Diger Siralama AlgoritmalariKabarcik Siralamasi Birlestirmeli Siralama Secmeli Siralama Kokteyl Siralamasi Hizli SiralamaYazilim ile ilgili bu madde taslak seviyesindedir Madde icerigini genisleterek Vikipedi ye katki saglayabilirsiniz