堆排序大顶堆 堆排序的堆是怎么建立的?
堆排序的堆是怎么建立的?
第一种方法是假设堆是空的,然后依次附加每个元素,因为堆的添加是向上调整的(不是排序,不能使用堆排序来实现堆排序)。这意味着每个非根元素依次向上调整。
第二种方法是按相反顺序调整每个非叶元素。
复杂性是。。。嗯,我记错了。第二个是O(n),比第一个低。
这是建造反应堆的过程。但是一旦有了堆,排序就容易多了。重复(1)堆头和堆尾的交换,(2)移除尾部元素并将它们放在另一个地方,(3)向下调整堆头,直到堆为空。
堆排序要求从大到大排序,我是要建大顶堆?还是小顶堆?
建造大屋顶或小屋顶都可以。如果你建一个大屋顶桩,你可以选择最大的一个每次。如果要从小到大排列,应将选定的元素放在末尾。如果你想从大排到小排,你应该把它们放在前面。但传统上,它是大顶桩,从大到小排,小顶桩,从小到大排。
用一组{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也位于堆的第一个位置,因此排序完成。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。