CodeBlanks Logo Icon CodeBlanks

Puan dizisi

Puanları diziye koyup yazdırırsın.

Merge sort uygula

Şimdi puan dizisini merge sort ile sıralayan fonksiyonu ekleyeceğiz. init_scores fonksiyonu önceki dersten geliyor ve burada çağrılacak.

merge sort'un O(n log n) çalıştığını ve kararlı olduğunu hatırla. Burada merge yardımcı fonksiyonu kullanarak iki sıralı yarıyı birleştireceğiz.

Beklediğimiz sıralı dizi [78, 85, 88, 90, 92] olmalı; küçükten büyüğe düzgün sıralanmış.

merge yardımcı

merge(left, right) iki sıralı diziyi birleştirir. Bu yardımcı önceki bölümlerde tanıtıldı; burada tekrar kullanacağız.

İki gösterici ile küçük olanı sonuca ekleriz. Kalanları da sona kopyalarız. Sonuç sıralı tek dizidir.

Bu yardımcı olmadan merge sort çalışamaz; bu yüzden projeye dahil ediyoruz.

Uygulama Skorları sırala

merge_sort_scores(scores) yaz. print(merge_sort_scores(init_scores())) ile [78, 85, 88, 90, 92] yazdır.

Başlangıç kodu

solution.py
def init_scores():
    # Puan dizisi döndür
    return [85, 92, 78, 90, 88]
def merge_sort_scores(scores):
    # Skorları sırala

Örnek çözüm

solution.py
def merge(left, right):
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i]); i += 1
        else:
            result.append(right[j]); j += 1
    result.extend(left[i:]); result.extend(right[j:])
    return result
def init_scores():
    # Puan dizisi döndür
    return [85, 92, 78, 90, 88]
def merge_sort_scores(scores):
    # Skorları sırala
    if len(scores) <= 1:
        return scores
    mid = len(scores) // 2
    left = merge_sort_scores(scores[:mid])
    right = merge_sort_scores(scores[mid:])
    return merge(left, right)
print(merge_sort_scores(init_scores()))

Beklenen çıktı

[78, 85, 88, 90, 92]

Soru ve cevaplar

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

1 Sıralı dizi ne olur?

  • [85, 92, 78, 90, 88]
  • [92, 90, 88, 85, 78]
  • [78, 85, 88, 90, 92] Doğru cevap
  • [78, 88, 85, 90, 92]

Açıklama: [78, 85, 88, 90, 92]

2 Temel durum

Soru
if len(scores) ____1:
Cevap
if len(scores) <=1:

Açıklama: <= doğru.

3 Puan dizisi: kavramları eşleştir

Kavram Anlamı
init_scores Veri
merge_sort_scores Sırala
merge Yardımcı
Sonuç [78,85,88,90,92]

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