了解堆排序演算法的前提是要知道完全二元樹和堆資料結構。堆排序演算法是將陣列視覺化為完全二元樹,因此也稱為「堆」。
1、根據最大堆屬性,資料組中最大的項目儲存在根節點
2、去掉根元素,放到陣列的最後(第n個位置),把樹的最後一項,放到空缺的地方。
3、將堆的大小減少1。
4、再次堆化根元素
5、重複這個過程,直到清單中的所有項目都被排序
指定数组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='')
以上是Python中實作堆排序演算法的概念及程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!