摘要:
算法思想:借助最大堆的性质,堆的根节点是最大的节点,每次迭代将根节点从堆中摘除,用最末一个叶子节点替代原先的根节点,此时新生成的树不具有堆的性质,所以要对树的结构进行调整,让新树的根下降到较低的层次(最大堆的根节点不小于它的子节点),以此来重新构造一个最大堆。算法步骤:1、首先建立最大堆2、排序思想是每次迭代都把根元素与最后一个元素交换,同时剔除根元素(heapSize - 1),再对交换上来的根进行调整,保持堆的性质。 1 // 最大堆调整 2 // i为待调整的根节点 3 void maxHeapify(int *A, int i, int size) { 4 // 根编号为0的左... 阅读全文