作者linkerEQ (等待sc2..)
看板TransCSI
标题Re: [问题] Heap Sort
时间Thu Aug 23 20:23:51 2007
※ 引述《forris (乔巴)》之铭言:
: 我现在有一串数列:3, 76, 11, 49, 25, 54, 66, 40, 32, 27
: 要做最大堆积,先把数列做成完整二元树:
: 3(1)
: / \
: 76(2) 11(3)
: / \ / \
: 49(4) 25(5) 54(6) 66(7)
: / \ /
: 40(8)32(9)27(10)
: 之後的步骤要怎麽做阿? 是把最大子节点跟父节点对调吗?
建max heap的方法有两种,你采用的是bottom up,
建完CBT後,从最後一个有child的父点开始调整,
括号内为存在一维阵列的位置,
假设n个资料,就是从n/2取下限的那个点为root所构成的subtree开始调,
现在有10个,所以找5号的那个子树
调成 27
/
25
再来换4号的,不需要调
3号调成 66
/ \
54 11
2号不需要调
1号调成 76 再检查对调过的那个3,是否比二个child大
/ \
3 66
没有的话就跟二个child里大的那个换,然後继续从对调过的子树检查,直到结束..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.217.234.101