堆排序的Python實現

2021-08-18 15:00:07 字數 351 閱讀 3495

堆排序主要包含兩個部分:堆建立和堆調整。

以下是最大堆**:

def max_heapify(heap,heapsize,root):

'''對乙個父節點及其左右孩子節點調整;heap:list;heapsize:做陣列最大限制,root:根節點位置

'''left = 2*root + 1 #注意此處下標從0開始,下標為1開始時,公式為left = 2*root 

right = left + 1

large = root

if left堆排序的複雜度:因為建堆的時間複雜度是o(n),調整堆的時間複雜度是log n,所以堆排序的時間複雜度是o(nlog n)。

參考:

堆排序的python實現

如圖所示,堆類似於一棵二叉樹,每個節點最多有兩個子結點,根據堆的特點,又分為大頂堆和小頂堆。對於大頂堆,每個結點的值均大於其子結點的值,小頂推則恰恰相反,每個結點的值均小於其子結點的值。而對排序結構雖然類似於二叉樹,不過確是在列表結構上實現排序的,當結點 i 存在子結點時,其左子結點的索引必定為2i...

堆排序的python實現

def max heapify heap,heapsize,root left 2 root 1 right left 1 larger root if left heapsize and heap larger heap left larger left if right heapsize and...

Python實現堆排序

usr bin env python coding utf 8 堆排序 class heap object 求給定下標i的父節點下標 defparent self,i if i 2 0 return i 2 1 else return i 2 求給定下標i的左孩子下標 defleft self,i ...