Advertisement

经典排序算法: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)

还没有任何评论哟~