# ╔═══════════════════════════════════════════════════════════════════╗ # ║ SIRALAMA YARIŞI — üç algoritma, aynı dizi, kaç karşılaştırma? ║ # ║ Deneme · Seçmeli · Eklemeli. Sonuçlar çubuk grafikle. ║ # ╚═══════════════════════════════════════════════════════════════════╝ kullan kaba.sistem fonksiyon renkli(yazi: metin, renk: sayi): don "\033[38;5;" + metin(renk) + "m" + yazi + "\033[0m" fonksiyon baslik(yazi: metin): yazdir("") yazdir(renkli(" " + yazi, 81)) yazdir(renkli(" " + "─".tekrarla(52), 238)) # ── Deneme: komşuları karşılaştır, büyüğü sona taşı ───────────────── fonksiyon kabarcik(kaynak): d = kaynak sayac = 0 tur = 0 iken tur < d.uzunluk(): i = 0 iken i < d.uzunluk() - tur - 1: sayac = sayac + 1 eger d[i] > d[i + 1]: g = d[i] d[i] = d[i + 1] d[i + 1] = g i = i + 1 tur = tur + 1 don sayac # ── Seçmeli: kalan en küçüğü bul, başa al ───────────────────────────── fonksiyon secmeli(kaynak): d = kaynak sayac = 0 i = 0 iken i < d.uzunluk(): en_kucuk = i j = i + 1 iken j < d.uzunluk(): sayac = sayac + 1 eger d[j] < d[en_kucuk]: en_kucuk = j j = j + 1 g = d[i] d[i] = d[en_kucuk] d[en_kucuk] = g i = i + 1 don sayac # ── Eklemeli: her öğeyi sıralı kısma yerleştir ──────────────────────── fonksiyon eklemeli(kaynak): d = kaynak sayac = 0 i = 1 iken i < d.uzunluk(): deger = d[i] j = i - 1 iken j >= 0: sayac = sayac + 1 eger d[j] <= deger: j = 0 - 1 degilse: d[j + 1] = d[j] j = j - 1 d[j + 1] = deger i = i + 1 don sayac fonksiyon sonuc_ciz(ad: metin, sayac: sayi, en_fazla: sayi, renk: sayi): genislik = 34 dolu = sayac * genislik // en_fazla cubuk = "█".tekrarla(dolu) + "·".tekrarla(genislik - dolu) yazdir(" " + renkli(ad, renk) + " " + renkli(cubuk, renk) + renkli(" " + metin(sayac), 245)) # ── Yarış ───────────────────────────────────────────────────────────── veri = [] n = 0 iken n < 40: veri.ekle(rastgele.sayi(1, 500)) n = n + 1 baslik("SIRALAMA YARIŞI — " + metin(veri.uzunluk()) + " rastgele sayı") a = kabarcik(veri) b = secmeli(veri) c = eklemeli(veri) en_fazla = a eger b > en_fazla: en_fazla = b eger c > en_fazla: en_fazla = c yazdir("") sonuc_ciz("Deneme ", a, en_fazla, 203) sonuc_ciz("Seçmeli ", b, en_fazla, 220) sonuc_ciz("Eklemeli ", c, en_fazla, 78) yazdir(renkli(" " + "─".tekrarla(52), 238)) yazdir(renkli(" Karşılaştırma sayısı — az olan daha verimli.", 245)) # Dilin kendi sıralaması: aynı işi tek satırda yapar. hazir = veri hazir.sirala() yazdir("") yazdir(renkli(" Dilin kendi sıralaması: veri.sirala()", 81)) yazdir(renkli(" ilk 8: " + metin(hazir[0]) + ", " + metin(hazir[1]) + ", " + metin(hazir[2]) + ", " + metin(hazir[3]) + ", " + metin(hazir[4]) + ", " + metin(hazir[5]) + ", " + metin(hazir[6]) + ", " + metin(hazir[7]), 245)) yazdir("")