堆排序如何建堆 用一组{14,15,30,28,5,10}关键字序列,写出初始建堆过程图示,再根据初始堆写出堆排序过程图示?
浏览量:2004
时间:2021-03-13 14:56:37
作者:admin
用一组{14,15,30,28,5,10}关键字序列,写出初始建堆过程图示,再根据初始堆写出堆排序过程图示?
起始顺序是14,15,30,28,5,10,(1)所以起始堆如下:14,15,30,28,5,10(2)假设我们想得到一个从小到大的C,所以我们需要建立一个大的顶部堆,并且起始状态是从下到上:步骤1:步骤2:14,30,28,14,25,10,10(3)初始堆已经建立。此时,顶层元素30是最大的元素,顶层元素与堆的最后一个元素交换。此时,最上面的元素30是队列末尾最大的元素,因此无需继续排序。因此,堆如下图所示:10 28 14 25 5(4)此时,由于除10以外的所有其他堆被交换到堆的顶部基本上都是有序的,因此自上而下构造得到的堆如下:28 25 14 10 5(5)重复步骤(3)和(4)确定28的位置,得到堆如下:25 1014 5(6)重复步骤(3)和(4)确定25的位置并获得堆,如下所示:14 10 5(7)重复步骤(3)和(4)确定14的位置并获得堆,如下所示:10 5(8)重复步骤(3)和(4)确定10的位置。此时,只有数字5也位于堆的第一个位置,因此排序完成。
初始堆是什么?是已经用堆排序排完的最终的堆吗?
优先级队列本身在堆中实现。假设优先级队列中已经有一堆数据。将它们逐个从队列中取出的过程可以称为堆排序。
当然,获取和插入优先级队列的过程需要重新调整堆。如果你已经实现了堆排序,你应该知道我在说什么。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。