排序算法之堆排序(Heapsort)解析

一.堆排序的优缺点(pros and cons)

(还是简单的说说这个,毕竟没有必要浪费时间去理解一个糟糕的的算法)

优点:

  1. 堆排序的效率与快排、归并相同,都达到了基于比较的排序算法效率的峰值(时间复杂度为O(nlogn))
  2. 除了高效之外,最大的亮点就是只需要O(1)的辅助空间了,既最高效率又最节省空间,只此一家了
  3. 堆排序效率相对稳定,不像快排在最坏情况下时间复杂度会变成O(n^2)),所以无论待排序序列是否有序,堆排序的效率都是O(nlogn)不变(注意这里的稳定特指平均时间复杂度=最坏时间复杂度,不是那个“稳定”,因为堆排序本身是不稳定的)

缺点:(从上面看,堆排序几乎是完美的,那么为什么最常用的内部排序算法是快排而不是堆排序呢?)

  1. 最大的也是唯一的缺点就是——堆的维护问题,实际场景中的数据是频繁发生变动的,而对于待排序序列的每次更新(增,删,改),我们都要重新做一遍堆的维护,以保证其特性,这在大多数情况下都是没有必要的。(所以快排成为了实际应用中的老大,而堆排序只能在算法书里面顶着光环,当然这么说有些过分了,当数据更新不很频繁的时候,当然堆排序更好些...)

二.内部原理

首先要知道堆排序的步骤:

  1. 构造初始堆,即根据待排序序列构造第一个大根堆或者小根堆(大根堆小根堆是什么?这个不解释了,稻草垛知道吧..)
  2. 首尾交换,断尾重构,即对断尾后剩余部分重新构造大(小)根堆
  3. 重复第二步,直到首尾重叠,排序完成

按小根堆排序结果是降序(或者说是非升序,不要在意这种细节..),按大根堆排序的结果是升序

上面这句话乍看好像不对(小根堆中最小元素在堆顶,数组组堆顶元素就是a[0],怎么会是降序?),不过不用质疑这句话的正确性,看了下面这几幅图就明白了:

假设待排序序列是a[] = {7, 1, 6, 5, 3, 2, 4},并且按大根堆方式完成排序

  • 第一步(构造初始堆):

{7, 5, 6, 1, 3, 2, 4}已经满足了大根堆,第一步完成

  • 第二步(首尾交换,断尾重构):

  • 第三步(重复第二步,直至所有尾巴都断下来):

无图,眼睛画瞎了,mspaint实在不好用。。到第二步应该差不多了吧,剩下的用笔也就画出来了。。

其实核心就是“断尾”,但可悲的是所有的资料上都没有明确说出来,可是,还有比“断尾”更贴切的描述吗?

三.实现细节

原理介绍中给出的图基本上也说清楚了实现细节,所以这里只关注代码实现

  • 首先是自己写出来的大根堆方式实现:

+

P.S.代码中注释极其详尽,因为是完全一步一步自己想着写出来的,应该不难理解。看代码说话,在此多说无益。

  • 接下来给出书本上的大根堆方式实现:

+

P.S.书本上的代码短了不少,不仅仅是篇幅上的优化,也有实实在在的步骤上的优化,细微差别也在注释中说明了。但这种程度的优化却使得代码的可读性大大降低,所以一次次拿起算法书,又一次次放下。。(实际应用中我们可以对书本上的代码做形式上的优化,在保持其高效性的同时尽可能的提升其可读性。。)

  • 最后是在研究过书本上的算法之后,结合其优化措施,写出的小根堆方式实现(网上的资料多是大根堆方式的,其实原理都一样,这里只是为了避免枯燥无趣。。):

+

P.S.注释依然详尽,看代码,不废话

四.总结

堆排序的步骤就几个字而已:建堆 -> 首尾交换,断尾重构 -> 重复第二步,直到断掉所有尾巴

还有比这更清晰更明了的描述吗?

到现在我们已经掌握了几个有用的排序算法了:

快速排序归并排序、堆排序

那么实际应用中要如何选择呢?有这些选择标准:

  1. 若n较小,采用插入排序和简单选择排序。由于直接插入排序所需的记录移动操作比简单选择排序多,所以当记录本身信息量比较大时,用简单选择排序更好。
  2. 若待排序序列基本有序,可以采用直接插入排序或者冒泡排序
  3. 若n较大,应该采用时间复杂度最低的算法,比如快排,堆排或者归并
    • 细分的话,当数据随机分布时,快排最佳(这与快排的硬件优化有关,在之前的博文中有提到过)
    • 堆排只需要一个辅助空间,而且不会出现快排的最坏情况
    • 快排和堆排都是不稳定的,如果要求稳定的话可以采用归并,还可以把直接插入排序和归并结合起来,先用直接插入获得有序碎片,再归并,这样得到的结果也是稳定的,因为直接插入是稳定的http://www.wenjuan.com/s/aiq22e

      http://www.wenjuan.com/s/JzaaEbo

      http://www.wenjuan.com/s/2muQ3i

      http://www.wenjuan.com/s/emm2a2

      http://www.wenjuan.com/s/IJvARv

      http://www.wenjuan.com/s/FBFRzqx

      http://www.wenjuan.com/s/36VJrm

      http://www.wenjuan.com/s/iAvQZb

      http://www.wenjuan.com/s/zqQJJr

      http://www.wenjuan.com/s/iUnqmm

      http://www.wenjuan.com/s/Uziime

      http://www.wenjuan.com/s/nMby2m

      http://www.wenjuan.com/s/RnUjU3

      http://www.wenjuan.com/s/2Mbyya

      http://www.wenjuan.com/s/qyqEbq

      http://www.wenjuan.com/s/FvyQJj

      http://www.wenjuan.com/s/2uMfQj

      http://www.wenjuan.com/s/m6Bray

      http://www.wenjuan.com/s/6fie2i

      http://www.wenjuan.com/s/riErUj

      http://www.wenjuan.com/s/MfuqEfX

      http://www.wenjuan.com/s/u677b2

      http://www.wenjuan.com/s/aMRjea

      http://www.wenjuan.com/s/FJJjUv

      http://www.wenjuan.com/s/imYzE3

      http://www.wenjuan.com/s/MVRBfa

      http://www.wenjuan.com/s/BjaeYb

      http://www.wenjuan.com/s/eiyYzq

      http://www.wenjuan.com/s/iYjUv2

      http://www.wenjuan.com/s/jUryAf

      http://www.wenjuan.com/s/MRBR3q

      http://www.wenjuan.com/s/NR3mQj

      http://www.wenjuan.com/s/B7Nfmu

      http://www.wenjuan.com/s/yYZZBv

      http://www.wenjuan.com/s/fiuaie

      http://www.wenjuan.com/s/73m2Qv

      http://www.wenjuan.com/s/3m2qMb

      http://www.wenjuan.com/s/3m2qMb

      http://www.wenjuan.com/s/Fv2UBf

      http://www.wenjuan.com/s/7RRJfi

      http://www.wenjuan.com/s/aUVfqa

      http://www.wenjuan.com/s/Mbq6Jb

      http://www.wenjuan.com/s/J7Fjea

      http://www.wenjuan.com/s/QnqqEf

      http://www.wenjuan.com/s/jUN3yq

      http://www.wenjuan.com/s/fQRram

      http://www.wenjuan.com/s/eemAVn

      http://www.wenjuan.com/s/vqmAZj

      http://www.wenjuan.com/s/R3mIzy

      http://www.wenjuan.com/s/RnmAra

      http://www.wenjuan.com/s/EnINB3

      http://www.wenjuan.com/s/EJ3m6r

      http://www.wenjuan.com/s/uyYzUf

      http://www.wenjuan.com/s/Zvqe22d

      http://www.wenjuan.com/s/3ieyYz

      http://www.wenjuan.com/s/UV3aa2

      http://www.wenjuan.com/s/3uABnu

      http://www.wenjuan.com/s/B3ArYv

      http://www.wenjuan.com/s/YbMZru

      http://www.wenjuan.com/s/NFFFVr

      http://www.wenjuan.com/s/MrAFFr

      http://www.wenjuan.com/s/qMrqE3

      http://www.wenjuan.com/s/FrYB3u

      http://www.wenjuan.com/s/MFFNne

      http://www.wenjuan.com/s/rY7Fb2

      http://www.wenjuan.com/s/UNFJVr

      http://www.wenjuan.com/s/UbuEfy

      http://www.wenjuan.com/s/7jqM3u

      http://www.wenjuan.com/s/Rjiyyi

      http://www.wenjuan.com/s/MfUr2e

      http://www.wenjuan.com/s/VvYFZv

      http://www.wenjuan.com/s/67jQRn

      http://www.wenjuan.com/s/NvAv6j

      http://www.wenjuan.com/s/mM3UJj

      http://www.wenjuan.com/s/UNzaqe

      http://www.wenjuan.com/s/jINF3q

      http://www.wenjuan.com/s/ErAzYb

      http://www.wenjuan.com/s/NbEBZn

      http://www.wenjuan.com/s/NFRjem

      http://www.wenjuan.com/s/qmEjEf

      http://www.wenjuan.com/s/iAJ3M3

      http://www.wenjuan.com/s/2uEjEbm

      http://www.wenjuan.com/s/VBzABz

      http://www.wenjuan.com/s/rii2eq

      http://www.wenjuan.com/s/vERVRf

      http://www.wenjuan.com/s/uAfyYz

      http://www.wenjuan.com/s/b26jUf

      http://www.wenjuan.com/s/mQbmaiF

      http://www.wenjuan.com/s/3aMfYj

      http://www.wenjuan.com/s/3UVbqq

      http://www.wenjuan.com/s/jiqUrm

      http://www.wenjuan.com/s/YVnYVj

      http://www.wenjuan.com/s/y2aaqa

      http://www.wenjuan.com/s/Iv6re2

      http://www.wenjuan.com/s/FRjAri

      http://www.wenjuan.com/s/BbumUf

      http://www.wenjuan.com/s/Jfamuq

      http://www.wenjuan.com/s/F7ZB32

      http://www.wenjuan.com/s/qqmURn

      http://www.wenjuan.com/s/i6ZnQr

      http://www.wenjuan.com/s/qiyaea

      http://www.wenjuan.com/s/JRZrqa

      http://www.wenjuan.com/s/UvaUNf

      http://www.wenjuan.com/s/Eju6Fn

      http://www.wenjuan.com/s/bmAFvy

      http://www.wenjuan.com/s/iiAR7f

      http://www.wenjuan.com/s/3YZn6b

      http://www.wenjuan.com/s/ueQzIv

      http://www.wenjuan.com/s/i6jem2

      http://www.wenjuan.com/s/J3qyqq

      http://www.wenjuan.com/s/riiErm

      http://www.wenjuan.com/s/nAJnau

      http://www.wenjuan.com/s/iemm2u

      http://www.wenjuan.com/s/jMjuyq

      http://www.wenjuan.com/s/aYfY3y

      http://www.wenjuan.com/s/F7jamm

      http://www.wenjuan.com/s/2q2ayq

      http://www.wenjuan.com/s/BbINr2

      http://www.wenjuan.com/s/ZrMrq2P

      http://www.wenjuan.com/s/v6nI7z

      http://www.wenjuan.com/s/ZZVZf2

      http://www.wenjuan.com/s/3i2MVf

      http://www.wenjuan.com/s/iaaeqy

      http://www.wenjuan.com/s/viiaYf

      http://www.wenjuan.com/s/UNfaMn

      http://www.wenjuan.com/s/FvIfAbh

      http://www.wenjuan.com/s/Z3YFVj

      http://www.wenjuan.com/s/aYNbqa

      http://www.wenjuan.com/s/zYvmAz

      http://www.wenjuan.com/s/fyAbmq

      http://www.wenjuan.com/s/MJbe6r

      http://www.wenjuan.com/s/quqMvm

      http://www.wenjuan.com/s/63QzQ3

      http://www.wenjuan.com/s/YfM7n2

      http://www.wenjuan.com/s/7BZba2

      http://www.wenjuan.com/s/NJvABf

      http://www.wenjuan.com/s/YRbi2a

      http://www.wenjuan.com/s/QfUBJf

      http://www.wenjuan.com/s/mAbEfe

      http://www.wenjuan.com/s/iiUNfyq

      http://www.wenjuan.com/s/riIJNb

      http://www.wenjuan.com/s/NNfuey

      http://www.wenjuan.com/s/nmMRf2

      http://www.wenjuan.com/s/MRB7Vb

      http://www.wenjuan.com/s/jqYjeq

      http://www.wenjuan.com/s/ARJNVr

      http://www.wenjuan.com/s/ARJNVr

      http://www.wenjuan.com/s/U3Y7fe

      http://www.wenjuan.com/s/FbAZF3

      http://www.wenjuan.com/s/EbuYzy

      http://www.wenjuan.com/s/Mf6bia

      http://www.wenjuan.com/s/J7zY7v

      http://www.wenjuan.com/s/QzQ32i

      http://www.wenjuan.com/s/QZfeae

      http://www.wenjuan.com/s/BRRVvm

      http://www.wenjuan.com/s/URRVze

      http://www.wenjuan.com/s/fuYfUf

      http://www.wenjuan.com/s/m63U7b

      http://www.wenjuan.com/s/Mzqe6fd

      http://www.wenjuan.com/s/v6jYry

      http://www.wenjuan.com/s/JfY7ba

      http://www.wenjuan.com/s/jEBJfm9

      http://www.wenjuan.com/s/yMVjua

      http://www.wenjuan.com/s/Mni2Un

      http://www.wenjuan.com/s/eaIjUr

      http://www.wenjuan.com/s/q2im2i

      http://www.wenjuan.com/s/Nraaua

      http://www.wenjuan.com/s/bYbUne

      http://www.wenjuan.com/s/yquuQ3

      http://www.wenjuan.com/s/vIJ7zm

      http://www.wenjuan.com/s/EvmM7f

      http://www.wenjuan.com/s/J3Y36jU

      http://www.wenjuan.com/s/3u2mI3

      http://www.wenjuan.com/s/ArQBZf

      http://www.wenjuan.com/s/EJ3Mfe

      http://www.wenjuan.com/s/auaaea

      http://www.wenjuan.com/s/JJzUzy

      http://www.wenjuan.com/s/v6biEfc

      http://www.wenjuan.com/s/YRjmMv

      http://www.wenjuan.com/s/3EfEvq

      http://www.wenjuan.com/s/nABzUz

      http://www.wenjuan.com/s/2a6zAz

      http://www.wenjuan.com/s/qQzEni

      http://www.wenjuan.com/s/y67RJn

      http://www.wenjuan.com/s/YvyMzy

      http://www.wenjuan.com/s/IB3aA3

      http://www.wenjuan.com/s/r6FBRv

      http://www.wenjuan.com/s/IJRzee

      http://www.wenjuan.com/s/6ZRV7v

      http://www.wenjuan.com/s/26vEVvw

      http://www.wenjuan.com/s/AFNnam

      http://www.wenjuan.com/s/QzqyQf

      http://www.wenjuan.com/s/AFNnam

      http://www.wenjuan.com/s/JnUrYr

      http://www.wenjuan.com/s/zMviUb

      http://www.wenjuan.com/s/JZZJfq

      http://www.wenjuan.com/s/vmmmeq

      http://www.wenjuan.com/s/nq2Ubm

      http://www.wenjuan.com/s/iInqM3

      http://www.wenjuan.com/s/NJJVbi

      http://www.wenjuan.com/s/mAfUNz

      http://www.wenjuan.com/s/36BJza

      http://www.wenjuan.com/s/Az2Evu

      http://www.wenjuan.com/s/BRRZva

      http://www.wenjuan.com/s/fiieaa

      http://www.wenjuan.com/s/6jUjau

      http://www.wenjuan.com/s/aeeaUv

      http://www.wenjuan.com/s/BJzaAb

      http://www.wenjuan.com/s/rqQNNv

      http://www.wenjuan.com/s/BZ7Vne

      http://www.wenjuan.com/s/nIJr2u

      http://www.wenjuan.com/s/jiYFne

      http://www.wenjuan.com/s/raA3MjW

      http://www.wenjuan.com/s/NzeaAnI

      http://www.wenjuan.com/s/jeayA3A

      http://www.wenjuan.com/s/byEbaa

      http://www.wenjuan.com/s/fameYz

      http://www.wenjuan.com/s/3Evueyx

      http://www.wenjuan.com/s/n2eYFj

      http://www.wenjuan.com/s/jE73em

      http://www.wenjuan.com/s/aMNJnu

      http://www.wenjuan.com/s/FJrI7n

      http://www.wenjuan.com/s/iyayyu

      http://www.wenjuan.com/s/fAV7ju

      http://www.wenjuan.com/s/eu6Vfe

      http://www.wenjuan.com/s/6veINr

      http://www.wenjuan.com/s/q2ENBrx

      http://www.wenjuan.com/s/rAVR3y

      http://www.wenjuan.com/s/RJR7Nn

      http://www.wenjuan.com/s/2ieI3y

      http://www.wenjuan.com/s/A7nAZn/

      http://www.wenjuan.com/s/yAviqe/

      http://www.wenjuan.com/s/e2YrIr/

      http://www.wenjuan.com/s/A7nAZn/

      http://www.wenjuan.com/s/yAviqe/

      http://www.wenjuan.com/s/YRb6R3/

      http://www.wenjuan.com/s/YrquQj/

      http://www.wenjuan.com/s/UJbIRvP/

      http://www.wenjuan.com/s/r2mMri/

      http://www.wenjuan.com/s/aaqUru/

      http://www.wenjuan.com/s/YnmYN3/

      http://www.wenjuan.com/s/fqUree/

      http://www.wenjuan.com/s/v6neyi/

      http://www.wenjuan.com/s/Vjyiii/

      http://www.wenjuan.com/s/f6JzEv/

      http://www.wenjuan.com/s/Rb6Fby/

      http://www.wenjuan.com/s/JZNvIj/

      http://www.wenjuan.com/s/vumErq/

      http://www.wenjuan.com/s/NjQNfmH/

      http://www.wenjuan.com/s/raYNJr/

      http://www.wenjuan.com/s/EBVRfq/

      http://www.wenjuan.com/s/7Z3m6b/

      http://www.wenjuan.com/s/JB7bEj/

      http://www.wenjuan.com/s/q6ZRJ3/

      http://www.wenjuan.com/s/yQRjaq/

      http://www.wenjuan.com/s/me6fqe/

      http://www.wenjuan.com/s/Y7nIzu/

      http://www.wenjuan.com/s/YZfaQn/

      http://www.wenjuan.com/s/JRfQNz/

      http://www.wenjuan.com/s/RVjU7r/

      http://www.wenjuan.com/s/InqU3q/

      http://www.wenjuan.com/s/673qui/

      http://www.wenjuan.com/s/FJvQzi/

      http://www.wenjuan.com/s/7nIVVn/

      http://www.wenjuan.com/s/VJJJVr/

      http://www.wenjuan.com/s/V32eQr/

      http://www.wenjuan.com/s/eYNzm2/

      http://www.wenjuan.com/s/FfYrQv/

      http://www.wenjuan.com/s/VnIJNj/

      http://www.wenjuan.com/s/qUfYNv/

      http://www.wenjuan.com/s/vA3MVv/

      http://www.wenjuan.com/s/6jMNrm/

      http://www.wenjuan.com/s/uqiuae/

      http://www.wenjuan.com/s/jAfiqy/

      http://www.wenjuan.com/s/MfeiEn/

      http://www.wenjuan.com/s/BRb2Mr/

      http://www.wenjuan.com/s/m6nAju/

      http://www.wenjuan.com/s/VZvUBv/

      http://www.wenjuan.com/s/6JniEv/

      http://www.wenjuan.com/s/VBnmym/

      http://www.wenjuan.com/s/vy2ae2/

      http://www.wenjuan.com/s/e2mMrq/

      http://www.wenjuan.com/s/6B732y/

      http://www.wenjuan.com/s/UFvEbu/

      http://www.wenjuan.com/s/rq6vya/

      http://www.wenjuan.com/s/mqaeY3/

      http://www.wenjuan.com/s/f2eUfq/

      http://www.wenjuan.com/s/FBBbme/

      http://www.wenjuan.com/s/uQVreq3

      http://www.wenjuan.com/s/ieIZZb

      http://www.wenjuan.com/s/jqIbai

      http://www.wenjuan.com/s/NBNvAv

      http://www.wenjuan.com/s/qMr6jm

      http://www.wenjuan.com/s/n2YrQb

      http://www.wenjuan.com/s/yAfYRn

      http://www.wenjuan.com/s/nQFVn2

      http://www.wenjuan.com/s/UzIV7f

      http://www.wenjuan.com/s/JVZ3uq

      http://www.wenjuan.com/s/UvaAZv

      http://www.wenjuan.com/s/f2eUfq

      http://www.wenjuan.com/s/IrQBniM

      http://www.wenjuan.com/s/mqaeY3

      http://www.wenjuan.com/s/rq6vya

      http://www.wenjuan.com/s/UFvEbu

      http://www.wenjuan.com/s/r6VjM3

      http://www.wenjuan.com/s/UBJ7Fz

      http://www.wenjuan.com/s/zi2i22

      http://www.wenjuan.com/s/mIRfAj

      http://www.wenjuan.com/s/67RbU3?

      http://www.wenjuan.com/s/Ina2me

      http://www.wenjuan.com/s/z6byMj

      http://www.wenjuan.com/s/I3IZF3

      http://www.wenjuan.com/s/BjqeiyO

      http://www.wenjuan.com/s/RNfUNnE

      http://www.wenjuan.com/s/RNfUNnE

      http://www.wenjuan.com/s/7Rj6ne

      http://www.wenjuan.com/s/FnA7fu

      http://www.wenjuan.com/s/NJjEVn

      http://www.wenjuan.com/s/6nAJzq

      http://www.wenjuan.com/s/jIjqY3

      http://www.wenjuan.com/s/jieaye

      http://www.wenjuan.com/s/RvmIju

      http://www.wenjuan.com/s/JJzaUz

      http://www.wenjuan.com/s/fQZ3ya

      http://www.wenjuan.com/s/NnqMjm

      http://www.wenjuan.com/s/auARzy

      http://www.wenjuan.com/s/vaEFJ3

      http://www.wenjuan.com/s/vaEFJ3

      http://www.wenjuan.com/s/AnuMVfR

      http://www.wenjuan.com/s/7vaya2S

时间: 2024-10-09 20:31:44

排序算法之堆排序(Heapsort)解析的相关文章

排序算法系列——堆排序

记录学习点滴,菜鸟成长记 堆排序引入了另一种算法设计技巧:使用一种我们称之为“堆”的数据结构来进行数据管理. 堆排序算是真正意义上的利用数据结构来求解数组排序的方法. “插入排序”和“归并排序”可以看做是一种“计算机体力活”,体现的思想更多的是去模拟最简单的人类思维,比如插入排序过程中的比较,归并中子问题合并时的比较. “堆排序”可以看做是“计算机脑力活”,他利用了一种结构化的语言来表达,这种结构化带来一些性质,比如左右孩子.比[堆大小的一半向下取整]大的下标都是叶节点不需要维护其最大堆性质等.

排序算法: 堆排序法

一,使用堆排序法之前,需要了解堆的特性: 1,堆一般都用数组的方式来存储,堆分为“最大堆”和“最小堆”: 2,以“最大堆”为例: (1)一个节点最多有两个子节点,即左右节点,每个节点都是一个堆: (2)父节点的值不小于子节点的值: (3)一个i节点,其父节点为(i-1)/2,左节点(2*i+1),右节点(2*i+2) 一个最大堆例子: 数组 int a[]: 83 78 81 48 17 27 二,将一个数组形成堆(以最大堆为例) 数组a[]: 27 48 81 78 17 83 形成最大堆思路

排序算法之堆排序

1. 堆排序的思想 输入一个数组,利用一组二叉树的操作使其变成有序的数组,就是堆排序 堆排序利用的是二叉树的思想,操作对象是数组,所以数组需要在逻辑上映射到二叉树上,由于数组的下标是连续的,而二叉树中只有完全二叉树和满二叉树是连续的,所以将数组元素逐个映射到完全二叉树上,然后配备一系列的操作即可.例如数组data[]={9,6,5,4,3,2,1,7},映射到完全二叉树上如下图所示. 2.堆排序的过程 还是用上面的data数组作为输入数组,映射到完全二叉树如上图所示,怎么利用二叉树的性质,才能使

排序算法(2) 堆排序 C++实现

堆 1 数组对象 2 可以视为一棵完全二叉树 3 一个堆可以被看作一棵二叉树和一个数组,如下图所示: 4 下标计算(通常使用内联函数或者宏来定义下标操作): 已知某个结点的下标为i 其父节点下标:i/2向下取整 左孩子下标:2i 右孩子下标:2i+1 5 最大堆:除根节点以外的每个节点i,有A[PARENT(i)] >= A[i] 最小堆:除根节点意外的每个节点i,有A[PARENT(i)] <= A[i] 堆排序 步骤: 建大顶堆 去堆顶元素与当前堆的最后一个元素进行互换. 该堆顶元素已达最

排序算法:堆排序

堆排序 1. 堆: 1. 一种完全二叉树. 2. 每个结点的值都大于或等于其左右子结点的值,大顶堆. 3. 小顶堆同理. 2. 是简单选择排序的一种改进:把每次比较的结果用堆来保存起来. 3. 堆排序(大顶堆): 1. 将待排序列构造成一个大顶堆. 2. 将堆顶和待排序列最后一个元素交换,也就是保存起来. 3. 将剩余的序列(去除最后一个元素)重新构造成一个堆. 4. 重复23 . 4. 待排序列构造初始大顶堆: 1. 设序列长度length,已经构造好最初的完全二叉树,无序. 2. 从最下层最

初级排序算法之堆排序

堆排序的思想 堆排序的具体算法,思想是每次取出堆的最顶层根节点,即数组下标为0,然后与最后一个节点即i+1交换. 参考地址 建堆过程: 首先将原始队列构建成完全二叉树 然后从第一个非叶子节点开始,比较当前节点和其孩子节点,将最大的元素放在当前节点,交换当前节点和最大节点元素. 注意:如果根节点是a[0],那么第一个非叶子节点就是倒数第二层的最后一个根节点,下标为length/2-1 将当前元素前面所有的元素都进行2的过程,这样就生成了最大堆 /** * @param data 原始数组序列 *

排序算法之堆排序(优先队列)

1.堆排序的堆,其实是一个 完全二叉树.既是一个结点要么是叶子结点,要么必定有左右两个子节点的树. 2.堆有序:每个结点的值,都必须大于两个子节点.但是两个子结点的大小不作要求. 3.一棵大小为N的完全二叉树,高度为lgN(层). 用数组实现堆,假设数组下标从0开始,下标为k的元素,它的左子树是2k+1,右子树是左子树+1,即2k+2 一:由上至下的有序化(下沉) 如果堆的有序状态,因为某个结点比它的两个子结点或者其中之一小而打破了,那么可以通过与两个子结点中的较大者来交换. 交换后可能会在子结

算法学习之排序算法:堆排序

要了解堆排序,首先要了解堆的概念,因为本文主要研究堆排序的算法,此处对数据结构堆只是给出概念:n个元素的序列{k1,k2,...kn},当且仅当满足如下关系时,称之为堆. k[i] <= k[2i]且k[i] <= k[2i+1] (或 k[i] >= k[2i]且k[i] >= k[2i+1]) 比如:序列96.83.27.38.11.09(或12.36.24.85.47.30.53.91)都是堆. 如果将堆对应的一维数组看成是一个二叉树,则堆的含义表明:完全二叉树中所有非终端结

排序算法(堆排序)

堆排序是对选择排序的改进(时间复杂度和希尔排序一样O(nlog2n)) 数据结构:完全二叉树(大顶堆,根节点都比左右节点大,小顶堆,根节点小于双亲节点) public class HeapSort {    public static void main(String[] args) {        int a[]={1,2,4,9,33,2,6,7,10,11};        sort(a, 10);        for (int i = 0; i < a.length; i++) {