Algoritmalar · 83 satır
Sıralama animasyonu
Kabarcık sıralaması: karşılaştırılan çift sarı, yerine oturan kuyruk yeşil yanar.
Önizleme · 0.6.0 — dil 1.0 öncesidir; sözdizimi ve kütüphane değişebilir. Buradaki her örnek derlenerek sınanır.
Çalıştırın
Uçbirim
kabalang calistir 01_siralama_animasyonu.kblKaynak kod
01_siralama_animasyonu.kbl
# ╔═══════════════════════════════════════════════════════════════════╗
# ║ SIRALAMA ANİMASYONU — Kabarcık Sıralaması ║
# ║ Her adımda dizi yeniden çizilir: karşılaştırılan çift SARI, ║
# ║ yerine oturmuş kuyruk YEŞİL yanar. ║
# ║ ║
# ║ Çalıştır: kabalang calistir 01_siralama_animasyonu.kbl ║
# ╚═══════════════════════════════════════════════════════════════════╝
kullan kaba.sistem
# ── Terminal efektleri ────────────────────────────────────────────────
# ANSI kaçış dizileri doğrudan yazdırılır: renk, imleç, ekran temizleme.
# ⚠️ Yardımcı fonksiyonlar KULLANILMADAN ÖNCE tanımlanır.
fonksiyon renkli(yazi: metin, renk: sayi):
don "\033[38;5;" + metin(renk) + "m" + yazi + "\033[0m"
fonksiyon ekrani_temizle():
yazdir("\033[H\033[2J")
fonksiyon cubuk(deger: sayi, renk: sayi):
dolu = "█".tekrarla(deger)
bos = "·".tekrarla(20 - deger)
don renkli(dolu, renk) + renkli(bos, 238)
# ── Çizim ─────────────────────────────────────────────────────────────
fonksiyon diziyi_ciz(dizi, sol: sayi, sag: sayi, yerlesmis: sayi, takas: sayi, karsilastirma: sayi):
ekrani_temizle()
yazdir("")
yazdir(renkli(" KABARCIK SIRALAMASI", 81))
yazdir(renkli(" " + "─".tekrarla(44), 238))
i = 0
iken i < dizi.uzunluk():
renk = 244
eger i >= yerlesmis:
renk = 78
eger i == sol:
renk = 220
eger i == sag:
renk = 220
yazdir(" " + cubuk(dizi[i], renk) + renkli(" " + metin(dizi[i]), renk))
i = i + 1
yazdir(renkli(" " + "─".tekrarla(44), 238))
yazdir(renkli(" karşılaştırma: " + metin(karsilastirma) + " takas: " + metin(takas), 245))
uyu(55)
# ── Veri ──────────────────────────────────────────────────────────────
dizi = []
n = 0
iken n < 14:
dizi.ekle(rastgele.sayi(1, 20))
n = n + 1
# ── Algoritma ─────────────────────────────────────────────────────────
# Kabarcık sıralaması: komşu çiftleri karşılaştır, gerekirse takas et.
# Her turda en büyük eleman sona "kabarır", o yüzden kuyruk kısalır.
takas = 0
karsilastirma = 0
yerlesmis = dizi.uzunluk()
tur = 0
iken tur < dizi.uzunluk():
i = 0
hareket_var = yanlis
iken i < dizi.uzunluk() - tur - 1:
karsilastirma = karsilastirma + 1
diziyi_ciz(dizi, i, i + 1, yerlesmis, takas, karsilastirma)
eger dizi[i] > dizi[i + 1]:
gecici = dizi[i]
dizi[i] = dizi[i + 1]
dizi[i + 1] = gecici
takas = takas + 1
hareket_var = dogru
i = i + 1
yerlesmis = yerlesmis - 1
# Hiç takas olmadıysa dizi zaten sıralıdır — erken çıkış.
eger hareket_var == yanlis:
yerlesmis = 0
tur = dizi.uzunluk()
tur = tur + 1
diziyi_ciz(dizi, 0 - 1, 0 - 1, 0, takas, karsilastirma)
yazdir("")
yazdir(renkli(" ✓ " + metin(dizi.uzunluk()) + " sayı, " + metin(karsilastirma) + " karşılaştırma, " + metin(takas) + " takas.", 78))
yazdir("")