您现在的位置是:首页 >精选问答 > 2023-08-13 16:32:18 来源:

c++优先队列(优先队列)

导读 大家好,我是小夏,我来为大家解答以上问题。c++优先队列,优先队列很多人还不知道,现在让我们一起来看看吧!1、堆排序就是将所有待排序的...

大家好,我是小夏,我来为大家解答以上问题。c++优先队列,优先队列很多人还不知道,现在让我们一起来看看吧!

1、堆排序就是将所有待排序的元素组成一个堆,然后不断弹出堆顶的元素并调用函数维持堆序,直到所有元素均被弹出后,排序完成。被弹出的元素序列即一个有序数列。

2、一般做法是这样:

3、当一个节点被插入时,将该节点放在堆的末尾(这是为了保证堆是完全二叉树)然后将该节点与它的父节点比较,看该节点是否大于(或小于)其父节点,即判断当前的堆是否满足堆序。如果不满足,则将该节点与其父节点交换。

4、再将该节点与其新的父节点做比较,依此类推,直到该节点不再需要与其父节点交换为止。(即满足堆序时停止) 当一个根节点被弹出(即被从堆中删除)时,将堆最尾部的节点移动到头结点的位置,然后将该节点不断与其子节点比较,如果不符合堆序则交换,直到符合堆序为止。

本文到此讲解完毕了,希望对大家有帮助。