网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共118页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ap0

堆排序算法 void HeapSort ( Elem R[], int n ) {// 对记录序列R[1..n]进行堆排序 for ( i=n/2; i0; --i )// 把R[1..n]建成大顶堆 HeapAdjust ( R, i, n ); for ( i=n; i1; --i ) { R[1]←→R[i]; // 将堆顶记录和当前未经排序子序列 R[1..i]中最后一个记录相互交换 HeapAdjust(R, 1, i-1); // 将R[1..i-1] 重新调整为大顶堆 } } // HeapSort void HeapAdjust (Elem R[], int s, int m) { // 已知R[s..m]中记录的关键字除R[s].key之外均满足堆的定义, // 本函数调整R[s] 的关键字,使R[s..m]成为一个大顶堆 rc = R[s]; for ( j=2*s; j=m; j*=2 ) {// 沿key较大的孩子结点向下筛选 if ( jm R[j].keyR[j+1].key ) ++j; // j为key较大的记录的下标 if ( rc.key = R[j].key ) break; // rc应插入在位置s上 R[s] = R[j]; s = j;} R[s] = rc; // 插入 } // HeapAdjust 91 88 42 23 24 16 05 13 (a)初始堆a[1]到a[8] 91 88 42 23 24 16 05 13 23 91 13 88 42 24 16 05 (b)第1次交换之后 13 88 42 23 24 16 05 91 堆排序的示例2(排序)如下: 88 24 42 23 13 16 05 91 (c)重建的堆a[1]到a[7] 88 24 42 23 13 16 05 91 88 24 42 23 13 16 05 91 (c)重建的堆a[1]到a[7] 88 24 42 23 13 16 05 91 05 24 42 23 13 16 88 91 (d)第2次交换之后 05 24 42 23 13 16 88 91 42 24 16 23 13 05 88 91 (e)重建的堆a[1]到a[6] 42 24 16 23 13 05 88 91 42 24 16 23 13 05 88 91 (e)重建的堆a[1]到a[6] 42 24 16 23 13 05 88 91 05 24 16 23 13 42 88 91 (f)第3次交换之后 05 24 16 23 13 42 88 91 24 23 16 05 13 42 88 91 (g)重建的堆a[1]到R[5] 24 23 16 05 13 42 88 91 24 23 16 05 13 42 88 91 (g)重建的堆a[1]到R[5] 24 23 16 05 13 42 88 91 13 23 16 05 24 42 88 91 (h)第4次交换之后 13 23 16 05 24 42 88 91 23 13 16 05 24 42 88 91 (i)重建的堆a[1]到a[4] 23 13 16 05 24 42 88 91 23 13 16 05 24 42 88 91 (i)重建的堆a[1]到a[4] 23 13 16 05 24 42 88 91 05 13 16 23 24 42 88 91 (j)第5次交换之后 05 13 16 23 24 42 88 91 16 13 05 23 24 42 88 91 (k)重建的堆a[1]到a[3] 16 13 05 23 24 42 88 91 16 13 05 23 24 42 88 91 (k)重建的堆a[1]到a[3] 16 13 05 23 24 42 88 91 05 13 16 23 24 42 88 91 (l)第6次交换之后 05 13 16 23 24 42 88 91 13 05 16 23 24 42 88 91 (m)重建的堆a[1]到a[2] 13 05 16 23 24 42 88 91 13 05 16 23 24 42 88 91 (m)重建的堆a[1]到a[2] 13 05 16 23 24 42 88 91 05 13 16 23 24 42 88 91 (n)第7次交换之后 05 13 16 23 24 42 88 91 堆排序的时间复杂度分析: 1. 对深度为 h 的堆,“筛选”所需进行的关键字 比较的次数至多为2(h-1); 3. 调整“堆顶” n-1 次,总共进行的关键

文档评论(0)

shenland + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档