Puan dizisi
- Algoritmalar kursu
- Orta seviye
- Ders 22/80
- 4 dk
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
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
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
if len(scores) ____1:
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] |