计算机软件技术基础课件作者李淑芬第7章节.ppt

计算机软件技术基础课件作者李淑芬第7章节.ppt

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
存放在地址连续的一组存储单元上:对记录本身进行物理重排(即通过关键字之间的比较判定,将记录移到合适的位置) ; 存放在静态链表中:无须移动记录,仅需修改指针。通常将这类排序称为链表(或链式)排序 ; 用顺序的方式存储待排序的记录,但同时建立一个辅助表(如包括关键字和指向记录位置的指针组成的索引表) :只需对辅助表的表目进行物理重排(即只移动辅助表的表目,而不移动记录本身)。适用于难于在链表上实现,仍需避免排序过程中移动记录的排序方法。 排序过程的两个基本操作: 两个关键字之间进行比较 将一个记录从一个位置移到另一个位置 评价标准 空间复杂度 时间复杂度 关键字的比较次数 移动记录的次数 建“初堆”的基本方法: 从堆中最后一个有孩子的结点开始利用堆的性质进行调整。 40 55 49 73 81 64 36 12 27 98 (40,55,49,73,12,27,98,81,64,36) 12 36 81 73 49 98 81 73 55 98 49 40 64 36 12 27 7.4.2 堆排序——建立初始堆的方法 对深度为 k 的堆,“筛选”所需进行的关键字比较的次数至多为2(k-1); 2. 对 n 个关键字,建成深度为h(=?log2n?+1)的堆,所需进行的关键字比较的次数至多 4n; 3. 需要调整“堆” n-1 次,总共进行的关键字比较的次数不超过 2 (?log2(n-1)?+ ?log2(n-2)?+ …+log22) 2n(?log2n?) 因此,堆排序的时间复杂度为O(nlogn)。 优势:节省空间且堆原始数据的排序不敏感。 7.4.2 堆排序——时间复杂度分析 7.5 归 并 排 序 “归并”的含义是将两个或两个以上的有序表合成一个新的有序表。 假设初始表含有n个记录,则可看成是n个有序的子表,每个子表的长度为1,然后两两归并,得到?n/2?个长度为2或1的有序子表,再两两归并,如此重复,直至得到一个长度为n的有序子表为止,这种方法称为“二路归并排序”。 7.5 归并排序——算法思想   在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的记录有序子序列。 归并为一个记录的有序序列。 有 序 序 列 L.r [l..n] 有序子序列 L.r[l..m] 有序子序列 L.r [m+1..n] 7.5 归并排序——算法思想 7.5 归并排序——排序过程 容易看出,对 n 个记录进行归并排序的时间复杂度为Ο(nlog2n)。即:每一趟归并的时间复杂度为 O(n),总共需进行 ?log2n? 趟。 归并排序的特点: 是一种稳定性排序方法。辅助空间复杂度:O(n),时间复杂度:Ο(nlog2n)。 7.5 归并排序——性能分析 7. 6 各种排序方法的综合比较 1. 平均的时间性能 时间复杂度为 O(nlogn): 快速排序、堆排序和归并排序 时间复杂度为 O(n2): 直接插入排序、冒泡排序和 简单选择排序 7.6 各种排序方法的综合比较——时间性能分析 2.最坏时间性能 时间复杂度为 O(nlogn): 堆排序和归并排序 时间复杂度为 O(n2): 快速排序、直接插入排序、 冒泡排序和简单选择排序 7.6 各种排序方法的综合比较——时间性能分析 3. 当待排记录序列按关键字顺序有序时 4. 简单选择排序、堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变。 直接插入排序和起泡排序能达到O(n)的时间复杂度, 快速排序的时间性能退化为O(n2) 。 7.6 各种排序方法的综合比较——时间性能分析 5. 2000年实验结果(主频200,单位:秒) 7.6 各种排序方法的综合比较——时间性能分析 0.28 0.8 584.67 199 286.92 2万(降序) 0.23 0.75 0.03 185.78 0.05 2万(升序) 0.47 0.77 399.47 185.05 143.67 20000 0.33 0.58 223.28 103 80.23 15000 0.22 0.35 99.1 46.02 35.43 10000 0.17 0.28 64.03 29.43 23.15 8000 0.07 0.13 15.78 17.3 5.67 4000 快速 堆 冒泡 直接选择 直接插入 n 指的是排序过程中所需的辅助空间大小 1. 所有的简单排序方法(包括:直接插入、起泡和简单选择) 和堆排序的空间复杂度为O(1); 2. 快速排序为O(logn),为递归程序执行过程中,栈所需的辅助空间; 7.6 各种排序方法的综合比较——空间性能分析 3. 归并排序所需辅助空间最多,其空间复杂度为

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档