原理:
有N个元素,从层数最多的根节点开始,从右到左逐层向上,不断的构造一个大根堆,当最上层的根为最大的元素的时候,和这个树最后一个子节点交换。然后在对N-1个元素继续构造大根堆。
举例:
0 1 2 3 4 5 6 7 8 9 (下标)
12 | 5 | 57 | 2 | 31 | 90 | 32 | 95 | 76 |
对应转换成树形结构:
为了方便我之后用数组表示了:
从根2的开始:比较根的左右子节点95大于76,且95大于2,95和2进行交换。
12,5,57,95,31,90,32,,2,76
从根57的开始:90大于32且大于根,90与57进行交换。
12,5,90,95,31,57,32,2,76
从根5的开始:95大于31且大于根,90和5进行交换。
12,95,90,5,31,57,32,2,26
从根5的开始:76大于2且大于根,76和5进行交换。
12,95,90,76,31,57,32,2,5
从根12的开始:95大于90且大于根,95和12进行交换。
95,12,90,76,31,57,32,2,5