堆排序过程
- 建立堆
- 得到堆顶元素,为最大元素
- 去掉堆顶,将堆最后一个元素放到堆顶,此时可通过一次调整重新使堆有序
- 堆顶元素为第二大元素
- 重复步骤 3,直到堆变空
原始的堆
把最大的数给移开
为了防止把数移上去出现空位,所以把堆最后一个位置的元素给移动上去。这样可以继续利用堆的向下调整性,也可以保证不出现空位
然后利用向下调整性,把剩下的最大的数给移动上去
然后再把此时最大的数 8 给移出去
接下来依然是把最后一位移上去,满足了向下调整的条件
继续调整堆
然后把最大的 7 给移动上去,在把 7 拿出去,2 移到最上面
然后调整
拿掉最大的
最后面的 1 移动上去
把 5 拿出去,然后把最后面的 0 给移动上去
调整堆
把 4 移动出去,再把最后一个数给移动上去
调整堆
把 3 移出去,然后把最后一位 1 给移上去
然后调整
把 2 移动出去,把最右侧的 0 给移动上去
接着调整
然后把 1 给 移动出去,就剩个 0 ,然后就把 0 也移动出去,就完成排序了
网友评论