堆可以很容易实现优先级队列
堆排序来说,存储形式通常是数组,逻辑形式是完全二叉树,根节点是1,parent(i) = (i 的下界),left = 2i, right = 2i + 1,这些都是移位操作,可以用宏或者内联来封装,堆有2种,最大堆和最小堆,堆排序用的是最大堆。
MAX-HEAPIFY(A[], i) // 假定i的left和right都是最大堆,判断i是不是正确的位置,不正确就下降
BUILD-MAX-HEAP(A[])
HEAP-SORT
堆可以很容易实现优先级队列
堆排序来说,存储形式通常是数组,逻辑形式是完全二叉树,根节点是1,parent(i) = (i 的下界),left = 2i, right = 2i + 1,这些都是移位操作,可以用宏或者内联来封装,堆有2种,最大堆和最小堆,堆排序用的是最大堆。
MAX-HEAPIFY(A[], i) // 假定i的left和right都是最大堆,判断i是不是正确的位置,不正确就下降
BUILD-MAX-HEAP(A[])
HEAP-SORT