CodeBlanks Logo Icon CodeBlanks

Özet - Heap sort

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

solution.py
def heap_sort(arr):
    # Build heap ve sırala

Örnek çözüm

solution.py
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

Soru
arr[____]
Cevap
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

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