堆排序(HeapSort)

原创 2007年10月14日 13:39:00
  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)

    堆排序的图解过程如下:







数据结构 - 堆排序(heap sort) 详解 及 代码(C++)

堆排序(heap sort) 详解 及 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy堆排序包含两个步骤: 第一步: 是建立大顶堆(从大到小排序)或小...
  • u012515223
  • u012515223
  • 2014年06月16日 11:10
  • 4251

堆排序Heap Sort——浅显易懂+Java实现

最近在恶补一些计算机基础内容,看到了堆排序,想想以前常说堆栈堆栈,但我竟然连堆有哪些应用都记不得了,所以,重温了堆排序后,我来给大家分享一下,希望能对大家有所帮助。(代码实现不采用伪代码,使用java...
  • sunnylinner
  • sunnylinner
  • 2016年09月19日 14:47
  • 1971

c++堆排序实现(heapsort) (算法导论)

利用最大堆实现。 最大堆:最大堆性质是除了根结点意外的所有结点 i 都要满足A[parent[i]] >= A[i] 需要利用到的一个性质:当用数组表示存储n个元素的堆时,叶结点的下标分别是n/2, ...
  • WangPegasus
  • WangPegasus
  • 2014年03月07日 13:14
  • 3697

堆排序(HeapSort)

1,什么是堆 这里的堆(二叉堆),指得不是堆栈的那个堆,而是一种数据结构。 堆可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示...
  • u011456016
  • u011456016
  • 2015年12月09日 21:27
  • 309

堆排序HeapSort

堆排序
  • xp178171640
  • xp178171640
  • 2015年08月08日 17:25
  • 306

堆排序(Heapsort)

堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点...
  • u013188470
  • u013188470
  • 2015年07月20日 16:33
  • 284

HeapSort 堆排序

堆排序算法: 思路: 先将序列构成一个大顶堆,然后将将第一个元素和剩余大顶堆的最后一个元素调换,然后将然后元素数再-1,再将剩下的调整为大顶堆,一直循环,具体思路见代码注释。注:堆排序的时间复杂度...
  • sinat_36053757
  • sinat_36053757
  • 2017年03月23日 11:28
  • 94

堆排序 HeapSort

堆排序 HeapSort二叉堆是一组能够用堆有序的完全二叉树排序的元素,并在数组中按照层级存储(不适用数组的一个位置,下标从1开始)!二叉堆可以很好的实现优先队列的基本操作。优先队列是一种抽象的数据结...
  • u010865433
  • u010865433
  • 2015年10月25日 16:38
  • 331

堆排序 Heapsort

/*============================================================================= # # FileName: He...
  • yulubupt
  • yulubupt
  • 2014年05月16日 16:50
  • 377

堆排序(HeapSort)

(二叉)堆 虽然要搞清楚一组数据完整的大小关系很费时间,但如果只想弄明白一部分大小关系的话就能在很短的时间内确定, 这就是堆序的思想: 把数组按下标排成一棵完全二叉树,该树满足的“一部分大小关系”就是...
  • u010383982
  • u010383982
  • 2015年01月01日 16:25
  • 798
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:堆排序(HeapSort)
举报原因:
原因补充:

(最多只允许输入30个字)