经典排序算法:Heap Sort(Python)
发布时间
阅读量:
阅读量
原理阐述
堆排序是一种基于堆结构(包括最大堆与最小堆)所设计的排序方法。堆本质上是一种完全二叉树的组织形式,其特性在于子节点的键值或索引始终小于或大于其父节点。
在采用最大堆进行排序时,其基本原理是不断从最大堆的顶端取出堆顶元素,并将其放置于有序序列中,直至所有元素都被取出。
具体算法步骤如下:
(1)、构建堆:从数组长度的一半位置开始,依次向上执行调整堆的操作,其中数组长度为len,而len/2则表示节点所在层级。
(2)、调整堆:对当前节点i及其左右子节点left(i)和right(i)进行比较,确定三者中的最大值。若该最大值并非当前节点i,则需交换i与该子节点的位置,并递归地继续调整堆的过程。调整过程的时间复杂度取决于堆的高度,通常为lgn级别。
(3)、执行堆排序:主要依赖上述两个步骤完成。首先根据数据构造出一个完整的堆结构;随后将根节点取出(通常通过与最后一个元素交换实现),并对剩余的前len-1个元素再次进行调整操作;重复此过程,直到所有元素均被取出并完成排序。
代码:
def BuildHeap(seq):
length = len(seq)
for i in range(0, int((length / 2)))[::-1]:
AdjustHeap(seq, i, leng
全部评论 (0)
还没有任何评论哟~
