Özet - Heap sort
- Algoritmalar kursu
- Orta seviye
- Ders 12/80
- 4 dk
Heap sort uygulayıp sonucu yazdıran mini görev yaparsın.
Özet - Heap sort
Heap sort: build heap (O(n)) + n-1 takas/heapify (O(n log n)). Yerinde çalışır, O(1) ek bellek. Kararlı değildir.
En kötü durumda bile O(n log n) verir; bu, quick sort'a göre bir avantajdır. Ama sabit faktör genelde daha yüksektir.
Öncelikli kuyruk uygulamalarında heap veri yapısı başlı başına kullanılır.
Uygulama Özet: heap sort
heap_sort(arr) yaz. arr=[3,1,4,1,5,9,2]; heap_sort(arr); print(arr) ile [1, 1, 2, 3, 4, 5, 9] yazdır.
Başlangıç kodu
def heap_sort(arr):
# Build heap ve sıralaÖrnek çözüm
def heapify(arr, n, i):
largest = i
left = 2 * i + 1
right = 2 * i + 2
if left < n and arr[left] > arr[largest]:
largest = left
if right < n and arr[right] > arr[largest]:
largest = right
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
def heap_sort(arr):
# Build heap ve sırala
n = len(arr)
for i in range(n // 2 - 1, -1, -1):
heapify(arr, n, i)
for i in range(n - 1, 0, -1):
arr[0], arr[i] = arr[i], arr[0]
heapify(arr, i, 0)
arr = [3, 1, 4, 1, 5, 9, 2]
heap_sort(arr)
print(arr)Beklenen çıktı
[1, 1, 2, 3, 4, 5, 9]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Özet - Heap sort: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
Build heap |
O(n) |
Sıralama |
O(n log n) |
Bellek |
O(1) ek |
Kararlı |
Hayır |
2 Kök indeksi
arr[____]
arr[0]
Açıklama: 0 doğru.
3 Heap sort'un bellek maliyeti nedir?
- O(1) ek Doğru cevap
- O(log n)
- O(n^2)
- O(n)
Açıklama: O(1) ek