堆排序过程是怎么算

图1.1 比较完 为什么图1.2比较4和6 而不是 3跟8?以此类推
2024-11-25 12:28:46
推荐回答(1个)
回答1:

首先,堆是什么?一般的实现中,堆就是数组。上图描述的是在一个数组中建堆的全过程。建堆是自下而上的过程,当上面的建堆过程开始时,下面的堆已经是有序的了。自下而上的过程,通俗的理解就是从数组中间向头部反向遍历,这种方式写成程序足够简单,而且建成的堆一定是符合堆的性质的。

你的原数组为1 3 4 5 7 2 6 8 0,那么建堆的顺序必然是5 4 3 1,正好反向的,多容易实现!

当然我认同你说的,图2和图3交换不会有差别,但是这样不好实现,也不好理解。