堆排序算法
算法特点:
利用完全二叉树的双亲结点与孩子结点的大小关系,每次输出堆顶元素,实现排序。时间复杂度o(nlogn)
是一个不稳定的排序算法。
算法步骤:
步骤1 构建堆:即根据元素初始顺序建立一个完全二叉树
示例:
步骤2 调整堆:从第N/2个结点到堆顶结点,若子节点大于该结点值,则与子节点中较大的那个交换,并继续向下调整,时间复杂度o(n)
步骤3 进行堆排序:每次输出堆顶元素(可以将堆顶元素与末端元素交换),然后把剩余的结点整理成堆,继续输出堆顶元素。
堆排序算法
算法特点:
利用完全二叉树的双亲结点与孩子结点的大小关系,每次输出堆顶元素,实现排序。时间复杂度o(nlogn)
是一个不稳定的排序算法。
算法步骤:
步骤1 构建堆:即根据元素初始顺序建立一个完全二叉树
示例:
步骤2 调整堆:从第N/2个结点到堆顶结点,若子节点大于该结点值,则与子节点中较大的那个交换,并继续向下调整,时间复杂度o(n)
步骤3 进行堆排序:每次输出堆顶元素(可以将堆顶元素与末端元素交换),然后把剩余的结点整理成堆,继续输出堆顶元素。