堆排序(C#)
(二叉)堆数据结构是一种数组对象,它可以被视为一颗完全二叉树.
完全二叉树(Complete Binary Tree)
若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的节点都连续集中在最左边,这就是完全二叉树。
完全二叉树是由满二叉树而引出来的。对于深度为K的,有N个结点的二叉树,
当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。
(完全二叉树)
在堆中对于某一节点i,如果它有左右儿子,则左儿子Left(i)的索引(从0开始)为i*2+1,
右儿子Right(i)的索引为i*2+2,节点i的父节点索引为(i-1)/2.
代码如下: