堆算法
2017-04-07 06:52:44 0 举报
堆算法是一种基于二叉树数据结构的比较排序算法,通过构建最大堆或最小堆实现元素的排序。最大堆是每个节点的值都大于或等于其子节点的值,而最小堆则是每个节点的值都小于或等于其子节点的值。堆算法的时间复杂度为O(nlogn),其中n为待排序元素的数量。堆算法常用于解决优先队列问题,如求取前k个最大元素、求取中位数等。堆算法具有空间复杂度低、时间复杂度优等优点,因此在实际应用中得到了广泛的应用。
作者其他创作
大纲/内容
假设当前节点的子节点已经是最大堆
是
结束
找出当前节点和子节点中的最大值
max-heapify
heap-sort
build-max-heap
从小到大排序
交换 A[1] 和A[size]
否
交换的子节点上递归调用max-heapify
堆size减1
build-max-heapify
交换当前节点和最大值子节点
当前节点的值最大
0 条评论
下一页