CodeBlanks Logo Icon CodeBlanks

Radix mantığı

Sayıları basamak basamak sıralayan algoritmayı öğrenirsin.

Radix mantığı

Radix sort, sayıları basamak basamak sıralar. Önce birler basamağına göre, sonra onlar, sonra yüzler... Her başamakta kararlı bir alt sıralayıcı (genelde counting sort) kullanılır.

En az anlamlı başamaktan (LSD) başlayarak en çok anlamlıya doğru ilerleriz. Kararlılık sayesinde önceki basamakların sırası bozulmaz.

d basamak sayısı, k taban olmak üzere maliyet O(d(n + k)). Büyük sayılar için bile etkilidir.

LSD ve MSD

LSD radix sort en az anlamlı başamaktan başlar. Her başamakta tüm diziyi yeniden sıralar. Kararlılık olduğu için sonunda doğru sıra elde edilir.

MSD radix sort en çok anlamlı başamaktan başlar ve her grubu recursion ile ayırır. Daha karmaşıktır ama bazı durumlarda daha az geçiş yapar.

LSD daha kolay uygulanır ve genelde tercih edilir.

Uygulama Basamak al

get_digit(n, d) yaz. n sayısının d basamağını (0=birler) döndür. print(get_digit(738, 1)) ile 3 yazdır.

Başlangıç kodu

solution.py
def get_digit(n, d):
    # d. basamağı döndür

Örnek çözüm

solution.py
def get_digit(n, d):
    # d. basamağı döndür
    return n // (10 ** d) % 10
print(get_digit(738, 1))

Beklenen çıktı

3

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Radix sort hangi alt sıralayıcıyı kullanır?

  • Quick sort
  • Kararlı counting sort Doğru cevap
  • Heap sort
  • Selection sort

Açıklama: Kararlı counting sort

2 Basamak sayısı

Soru
d = len(str(____))
Cevap
d = len(str(max(arr)))

Açıklama: max(arr) doğru.

3 Radix mantığı: kavramları eşleştir

Kavram Anlamı
LSD Birler önce
MSD Yüzler önce
Alt sıralayıcı Counting sort
Maliyet O(d(n+k))

Orta seviye bölümündeki tüm dersler