Heim >Backend-Entwicklung >Python-Tutorial >Konzept und Code zur Implementierung des Heap-Sortieralgorithmus in Python

Konzept und Code zur Implementierung des Heap-Sortieralgorithmus in Python

WBOY
WBOYnach vorne
2024-01-22 19:39:05951Durchsuche

堆排序算法概念 Python实现堆排序算法

Die Voraussetzung für das Verständnis des Heap-Sortieralgorithmus ist die Kenntnis des vollständigen Binärbaums und der Heap-Datenstruktur. Der Heap-Sortieralgorithmus visualisiert das Array als vollständigen Binärbaum und wird daher auch als „Heap“ bezeichnet.

Prinzip des Heap-Sortieralgorithmus

1. Gemäß dem Maximum-Heap-Attribut wird das größte Element in der Datengruppe im Wurzelknoten gespeichert.

2. Entfernen Sie das Wurzelelement und platzieren Sie es am Ende des Arrays n-te Position) und platzieren Sie das letzte Element des Baumelements im leeren Bereich.

3. Reduzieren Sie die Heap-Größe um 1.

4. Heapen Sie das Stammelement erneut

5 Wiederholen Sie den Vorgang, bis alle Elemente in der Liste sortiert sind

Python implementiert den Heap-Sortieralgorithmus

指定数组arr= 1 12 9 5 6 10

def heapify(arr, n, i):
      largest = i
      l = 2 * i + 1
      r = 2 * i + 2
  
      if l < n and arr[i] < arr[l]:
          largest = l
  
      if r < n and arr[largest] < arr[r]:
          largest = r
  
heapifying
      if largest != i:
          arr[i], arr[largest] = arr[largest], arr[i]
          heapify(arr, n, largest)
  
def heapSort(arr):
      n = len(arr)
  
      for i in range(n//2, -1, -1):
          heapify(arr, n, i)
  
      for i in range(n-1, 0, -1):
          arr[i], arr[0] = arr[0], arr[i]
  
          heapify(arr, i, 0)
  
  arr = [1, 12, 9, 5, 6, 10]
  heapSort(arr)
  n = len(arr)
  print("Sorted array is")
  for i in range(n):
      print("%d " % arr[i], end=&#x27;&#x27;)

Das obige ist der detaillierte Inhalt vonKonzept und Code zur Implementierung des Heap-Sortieralgorithmus in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:163.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen