摘要:
堆排序是另一种排序算法,它是一种原地排序算法,其运行时间为O(nlgn),并且在任何时候,数组中只有常数个元素存储在数组以外。在此之前要明确什么是堆,堆数组结构是一种数据对象,其可被视为是完全二叉树。树中每个结点与数组中的该结点值的那个元素对应。表示堆的数组A有两个属性的对象:length[A]是数组中的元素的个数heap-size[A]是存放在A中的堆元素个数,也就是A[1..heap-size[A]]的元素是放在相应堆中,当然heap-size[A]]≤length[A]。对于给定的某个结点i,父结点下标: PARENT(i) return [i/2],(将i的二进制表示右移一位)左儿子下 阅读全文