- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap9内部排序
第九章 内部排序 四类基本结构: 首先对无序的记录序列进行“一次划分”,之后分别对分割所得两个子序列“递归”进行快速排序。 无 序 的 记 录 序 列 无序记录子序列(1) 无序子序列(2) 枢轴 一次划分 分别进行快速排序 (见算法9.6) 三、快速排序 98 35 14 55 77 35 62 48 i j i i i j j j j 48 将基准记录r[left]移至x中; j从右向左扫描,直到r[j]x.key时,将r[j]移至空单元r[i],此时r[j]相当于空单元。 i从左向右扫描,直到r[i]x.key时,将r[i]移至空单元r[j],此时r[i]相当于空单元。 i和j相遇时,将基准记录移至r[i]中,完成一次划分过程。 98 62 77 55 48 35 14 35 快速排序举例: 快速排序 void QKSort(RecordType r[],int low, int high ) { int pos; if(lowhigh) { pos=QKPass(r, low, high); /*将枢轴元素为界划分两个子表*/ QKSort(r, low, pos-1); /*对左部子表快速排序*/ QKSort(r, pos+1, high); /*对右部子表快速排序*/ } } 一趟快速排序 int QKPass(RecordType r[],int left,int right) { RecordType x; int low,high; x= r[left]; low=left; high=right; while ( lowhigh ) { while (low high r[high].key=x.key ) high--; if ( low high ) /* 找到小于x.key的记录,则进行交换*/ { r[low]= r[high]; low++; } while (lowhigh r[low].keyx.key ) low++; if ( lowhigh ) /* 找到大于x.key的记录,则交换*/ { r[high]= r[low]; high--; } } r[low]=x; /*将基准记录保存到low=high的位置*/ return low; /*返回基准记录的位置*/ } 假设一次划分所得枢轴位置 i=k,则对n 个记录进行快排所需时间: 其中 Tpass(n)为对 n 个记录进行一次划分所需时间。 若待排序列中记录的关键字是随机分布的,则 k 取 1 至 n 中任意一值的可能性相同。 T(n) = Tpass(n) + T(k-1) + T(n-k) 四、快速排序的时间分析 设 Tavg(1)≤b 则可得结果: 结论: 快速排序的时间复杂度为O(nlogn) 由此可得快速排序所需时间的平均值为: 若待排记录的初始状态为按关键字有序时,快速排序将蜕化为冒泡排序,其时间复杂度为O(n2)。 为避免出现这种情况,需在进行一次划分之前,进行“予处理”,即: 先对 R(s).key, R(t).key 和 R[?(s+t)/2?].key,进行相互比较,然后取关键字为 “三者之中”的记录为枢轴记录。 9.4 选 择 排 序 简 单 选 择 排 序 树 形 选 择 排 序 堆 排 序 假设排序过程中,待排记录序列的状态为: 有序序列R[1..i-1] 无序序列 R[i..n] 第 i 趟 简单选择排序 从中选出 关键字最小的记录 有序序列R[1..i] 无序序列 R[i+1..n] 一、简单选择排序 98 35 14 55 77 35 62 48 i k 简单选择排序举例: 98 35 48 55 77 35 62 14 i k 98 35 48 55 77 62 35 14 i k 98 62 48 55 77 35 35 14 i k 简单选择排序 void SelectSort(RecordType r[], int length)
您可能关注的文档
最近下载
- 2024年中级社工法规四色讲义-完整版全189页 .pdf VIP
- 17K408:散热器选用与管道安装.docx VIP
- 2025年湖北省武汉市高考物理四调试卷+答案解析(附后) .pdf VIP
- 合信 COTRUST科创思CTSC-200系列用户手册V1.40.pdf
- 2012湖南公务员考试-公共基础知识.doc VIP
- 二年级语文教师家长会专用.ppt
- 杭州名鑫双氧水有限公司每年10万吨(折27.5%)过氧化氢技术改造项目可行性研究报告.doc
- DB14Z 1-2025 高速公路智慧服务区建设指南.docx
- [城市轨道交通地下段列车运行引起的住宅室内振动与结构噪声限值及测量方法上海市.doc VIP
- SR变更管理程序+变更全套表单 OK.doc
文档评论(0)