Dremi的专栏

过程重于结果。因为虽然梦想的实现可以改变生活,但你为了梦想而努力的过程,却恰恰是生活本身。 *...

堆排序(HeapSort)
  1. 堆的介绍:堆是一种数组,但是以树的结构形式来看待它,如下标 i 节点的求解Parent和Children节点如下:
    
         堆分为MAX-堆和MIN-堆,
    MAX堆满足的条件为: A[PARENT(i)] A[i] ,
    MIN堆满足的条件为: A[PARENT(i)] A[i] .
  2. MAX和MIN堆的维持:
    这里只对MAX堆,MIN对类似:数组A的LEFT(i) 和 RIGHT(i) 都是MAX堆,但可能A[ i ]可能小于它的Children节点,所以需要调整,调整伪代码如下:
    
        
  3. BUILD-MAX-HEAP(A)
    1  heap-size[A] ← length[A]
    2  for i ← ⌊length[A]/2⌋ downto 1
    3       do MAX-HEAPIFY(A, i)
    如下面建立MAX过程:



  4. HEAPSORT(A)
    1 BUILD-MAX-HEAP(A)
    2 for i ← length[A] downto 2
    3    do exchange A[1] ↔ A[i]
    4       heap-size[A] ← heap-size[A] - 1
    5       MAX-HEAPIFY(A, 1)

    堆排序的图解过程如下:







阅读更多
文章标签: exchange
个人分类: 算法和数据结构
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

堆排序(HeapSort)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭