- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
以后对所有的两部分分别重复上述过程,直至每部分内只有一个记录为止。 简而言之,每趟使表的第一个元素放入适当位置,将表一分为二,对子表按递归方式继续这种划分,直至划分的子表长为1。 public void QuickSort() //对R[0..n-1]的元素按递增进行快速排序 { QuickSort1(0,length-1); } private void QuickSort1(int s,int t) //对R[s..t]的元素进行快速排序 { int i=s,j=t; RecType tmp; if (st) //区间内至少存在两个元素的情况 { tmp=R[s]; //用区间的第1个元素作为基准 while (i!=j) //从区间两端交替向中间扫描,直至i=j为止 { while (ji R[j].key=tmp.key) j--; //从右向左扫描,找第1个小于tmp.key的R[j] R[i]=R[j]; //找到这样的R[j],R[i]和R[j]交换 while (ij R[i].key=tmp.key) i++; //从左向右扫描,找第1个大于tmp.key的元素R[i] R[j]=R[i]; //找到这样的R[i],R[i]和R[j]交换 } R[i]=tmp; QuickSort1(s,i-1); //对左区间递归排序 QuickSort1(i+1,t); //对右区间递归排序 } } 划分 例9.4 设待排序的表有10个记录,其关键字分别为{6,8,7,9,0,1,3,2,4,5}。说明采用快速排序方法进行排序的过程。 则可得结果: 结论: 快速排序的时间复杂度为O(nlog2n) 由此可得快速排序所需时间的平均值为: 平均所需栈空间为O(log2n)。 n k-1 n-k 1次划分的时间 Tavg(n)=Cnlog2n。 9.4 选择排序 选择排序的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子表的最后,直到全部记录排序完毕。 两种选择排序方法: (1)简单选择排序(或称直接选择排序) (2)堆排序 9.4.1 直接选择排序 基本思想:第i趟排序开始时,当前有序区和无序区分别为R[0..i-1]和R[i..n-1](0≤i<n-1),该趟排序则是从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[0..i]和R[i+1..n-1]分别变为新的有序区和新的无序区。 假设排序过程中,待排记录序列的状态为: 有序序列R[0..i-1] 无序序列 R[i..n-1] 第 i 趟 简单选择排序 从中选出关键字最小的记录 有序序列R[0..i-1] 无序序列 R[i+1..n-1] public void SelectSort() //对R[0..n-1]元素进行简单选择排序 { int i,j,min; RecType tmp; for (i=0;ilength-1;i++) //做第i趟排序 { min=i; for (j=i+1;jlength;j++) //在当前无序区R[i..n-1]中选key最小的R[min] if (R[j].keyR[min].key) min=j; //min记下目前找到的最小关键字所在的位置 if (min!=i) //交换R[i]和R[min] { tmp=R[i]; R[i]=R[min]; R[min]=tmp; } } } { 全局有序区 } R[i] …… R[n-1] 用选择找最小记录放到R[i]处 例9.5 设待排序的表有10个记录,其关键字分别为{6,8,7,9,0,1,3,2,4,5}。说明采用直接选择排序方法进行排序的过程。 对 n 个记录进行简单选择排序,所需进行的 关键字间的比较次数 总计为: 移动记录的次数,最小值为 0, 最大值为3(n-1) 。 9.4.2 堆排序 堆排序是一树形选择排序,它的特点是,在排序过程中,将R[1..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(或最小)的记录。 堆的定义是:n个关键字序列K1,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1)Ki≤K2i 且 Ki≤K2i+1 或 (2)Ki≥K2i 且 Ki≥K
您可能关注的文档
- 2012中考历史复习试题 第2单元 统一国家的建立及政权分立与民族融合(含11真题带解析) 人教新课标.doc
- 2012届高中语文 2.1.1《离骚(节选)》同步达标测试 苏教版必修3.doc
- 2012届高中语文 2.1.1《〈指南录〉后序》同步达标测试 苏教版必修3.doc
- 2012届高中语文 3.2.1《东方和西方的科学》同步达标测试 苏教版必修3.doc
- 2012届高三物理第二轮复习 机械能、内能和电势能的转化和守恒 新人教.doc
- 2012届高中语文 3.3.1《拿来主义》同步达标测试 苏教版必修3.doc
- 2012届高中语文 3.3.2《麦当劳中的中国文化表达》同步达标测试 苏教版必修3.doc
- 2012届高中语文 4.18《逍遥游》2精品教案 粤教版必修.doc
- 2012届高中语文 4.2.1《廉颇蔺相如列传(节选)》同步达标测试 苏教版必修.doc
- 2012届高中语文 4.3.2《非攻》同步达标测试 苏教版必修.doc
最近下载
- 2025年大足县大足县某国企招聘工作人员若干人备考题库及答案详解1套.docx VIP
- NB╱T 47013.8-2015 压设备无损检测第8部分:泄漏检测.pdf VIP
- 开关端子箱更换作业指导书.docx VIP
- 生产现场巡查与督导解读.pptx VIP
- 统编版(2019)高一上学期必修中外历史纲要上期末综合检测试卷(含答案解析).docx VIP
- 2025年大足县大足县某国企招聘工作人员若干人备考题库带答案详解.docx VIP
- 北京市民政局所属事业单位招聘考试真题及答案.docx VIP
- 2025《数据基础设施 接入管理》.pdf VIP
- 初中物理核心知识点全梳理(附中考考点标注).docx VIP
- 院感知识考试试题及答案.docx VIP
原创力文档


文档评论(0)