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
Freigeben: 2024-01-22 19:39:05
nach vorne
931 Leute haben es durchsucht

堆排序算法概念 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;)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:163.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage