98 81 49 73 55 64 12 36 27 40 例如: 是大顶堆 12 但在 98 和 12 进行互换之后,它就不是堆了, 因此,需要对它进行“筛选”。 98 12 81 73 64 12 98 比较 比较 void HeapAdjust (RcdType R[], int s, int m) { // 已知 R[s..m]中记录的关键字除 R[s] 之外均 // 满足堆的特征,本函数自上而下调整 R[s] 的 // 关键字,使 R[s..m] 也成为一个大顶堆 } // HeapAdjust rc = R[s]; // 暂存 R[s] for ( j=2*s; j=m; j*=2 ) { // j 初值指向左孩子 自上而下的筛选过程; } R[s] = rc; // 将调整前的堆顶记录插入到 s 位置 if ( rc.key = R[j].key ) break; // 再作“根”和“子树根”之间的比较, // 若“=”成立,则说明已找到 rc 的插 // 入位置 s ,不需要继续往下调整 R[s] = R[j]; s = j; // 否则记录上移,尚需继续往下调整 if ( jm R[j].keyR[j+1].key ) ++j; // 左/右“子树根”之间先进行相互比较 // 令 j 指示关键字较大记录的位置 建堆是一个从下往上进行“筛选”的过程。 40 55 49 73 81 64 36 12 27 98 例如: 排序之前的关键字序列为 12 36 81 73 49 98 81 73 55 现在,左/右子树都已经调整为堆,最后只要调整根结点,使整个二叉树是个“堆”即可。 98 49 40 64 36 12 27 堆排序的时间复杂度分析: 1. 对深度为 k 的堆,“筛选”所需进行的关键字 比较的次数至多为2(k-1); 3. 调整“堆顶” n-1 次,总共进行的关键 字比较的次数不超过 2 (?log2(n-1)?+ ?log2(n-2)?+ …+log22) 2n(?log2n?) 因此,堆排序的时间复杂度为O(nlogn)。 2. 对 n 个关键字,建成深度为h(=?log2n?+1)的堆,所需进行的关键字比较的次数至多 4n; 10.5 归 并 排 序 归并排序的过程基于下列基本思想进行: 将两个或两个以上的有序子序列 “归并” 为一个有序序列。 在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的记录有序子序列 归并为一个记录的有序序列。 有 序 序 列 R[l..n] 有序子序列 R[l..m] 有序子序列 R[m+1..n] 这个操作对顺序表而言,是轻而易举的。 void Merge (RcdType SR[], RcdType TR[], int i, int m, int n) { // 将有序的记录序列 SR[i..m] 和 SR[m+1..n] // 归并为有序的记录序列 TR[i..n] } // Merge for (j=m+1, k=i; i=m j=n; ++k) { // 将SR中记录由小到大地并入TR if (SR[i].key=SR[j].key) TR[k] = SR[i++]; else TR[k] = SR[j++]; } … … if (i=m) TR[k..n] = SR[i..m]; // 将剩余的 SR[i..m] 复制到 TR if (j=n) TR[k..n] = SR[j..n]; // 将剩余的 SR[j..n] 复制到 TR 归并排序的算法 如果记录无序序列 R[s..t] 的两部分 R[s..?(s+t)/2?] 和 R[?(s+t)/2?+1..t] 分别按关键字有序, 则利用上述归并算法很容易将它们归并成整个记录序列是一个有序序列。 由此,应该先分别对这两部分进行 2-路归并排序。 例如: 52, 23, 80, 36, 68, 14 (s=1, t=6) [ 52, 23, 80] [36,
您可能关注的文档
- 专题一二、调动和运用知识的能力剖析.ppt
- 专题一全面贯彻落实四个全面战略布局剖析.ppt
- 从技术到管理剖析.pptx
- 专题一网络基础剖析.ppt
- 《谁说女子不如男》说课课件剖析.ppt
- 《水浒》练习剖析.doc
- 专项方案PHC管桩剖析.doc
- 生产车间5s管理培训讲解.ppt
- 《水浒传》导读剖析.ppt
- 《水浒传》课件剖析.ppt
- 七年级语文上册期末模拟试卷1(解析版).docx
- 七年级语文上册期末模拟试卷1(原卷版).docx
- 七年级语文上册期末模拟试卷2(原卷版).docx
- 七年级语文上册期末模拟试卷2(解析版).docx
- 期末测试卷(二)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(三)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(二)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(三)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(一)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(一)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
最近下载
- GJB8848-2024系统电磁环境效应试验方法.pptx VIP
- 河南豫能控股股份有限公司及所管企业2026届校园招聘127人备考题库精编答案详解.docx VIP
- 2024-2025学年河南省郑州市七年级上期末数学试卷附答案解析.docx VIP
- 国家建筑标准设计图集 23S519小型排水构筑物图集.pdf VIP
- 大画幅相机的基本操作.doc VIP
- 2024脓毒症液体治疗急诊专家共识.pdf
- 2025届T8八省八校高三联考语文试卷讲评 课件.pptx VIP
- 大画幅相机基本操作(二).doc VIP
- 2025年度民主生活会“五个带头”个人检查发言8篇.docx VIP
- 23S519小型排水构筑物图集.docx VIP
原创力文档

文档评论(0)