堆排序问题

这个月太忙没时间看C++ 2017-06-09 04:56:47
5 public void HeapAdjust(int[] array, int parent, int length) {
6 int temp = array[parent]; // temp保存当前父节点
7 int child = 2 * parent + 1; // 先获得左孩子
8
9 while (child < length) {
10 // 如果有右孩子结点,并且右孩子结点的值大于左孩子结点,则选取右孩子结点
11 if (child + 1 < length && array[child] < array[child + 1]) {
12 child++;
13 }
14
15 // 如果父结点的值已经大于孩子结点的值,则直接结束
16 if (temp >= array[child])
17 break;
18
19 // 把孩子结点的值赋给父结点
20 array[parent] = array[child];
21
22 // 选取孩子结点的左孩子结点,继续向下筛选
23 parent = child;
24 child = 2 * child + 1;
25 }
26
27 array[parent] = temp;
28 }
29

第二十行的代码中,如果把孩子节点的值付给父节点,那父节点的值怎么办?不应该是跟孩子节点交换么?
...全文
120 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧