首頁  >  文章  >  後端開發  >  Python中實作堆排序演算法的概念及程式碼

Python中實作堆排序演算法的概念及程式碼

WBOY
WBOY轉載
2024-01-22 19:39:05869瀏覽

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

了解堆排序演算法的前提是要知道完全二元樹和堆資料結構。堆排序演算法是將陣列視覺化為完全二元樹,因此也稱為「堆」。

堆排序演算法原理

1、根據最大堆屬性,資料組中最大的項目儲存在根節點

2、去掉根元素,放到陣列的最後(第n個位置),把樹的最後一項,放到空缺的地方。

3、將堆的大小減少1。

4、再次堆化根元素

5、重複這個過程,直到清單中的所有項目都被排序

Python實作堆排序演算法

指定数组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;)

以上是Python中實作堆排序演算法的概念及程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:163.com。如有侵權,請聯絡admin@php.cn刪除