- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
if (ij) R[j- -]=R[i]; } R[i]=pivot; return i; } ? void QuickSort(int low,int high) // 递归形式的快排序 { int pivotpos,k; if (lowhigh) { pivotpos=Partition(low,high); //调用Partition(low,high)函数 QuickSort(low,pivotpos-1); // 对低子表递归排序 QuickSort(pivotpos+1,high); // 对高子表递归排序 } } 5.效率分析 空间效率:快速排序是递归的,每层递归调用时的指针和参数均要用栈来存放,递归调用层次数与上述二叉树的深度一致。因而,存储开销在理想情况下为O(log2n),即树的高度;在最坏情况下,即二叉树是一个单链,为O(n)。 时间效率:在n个记录的待排序列中,一次划分需要约n次关键码比较,时效为O(n),若设T(n)为对n个记录的待排序列进行快速排序所需时间。 理想情况下:每次划分,正好将分成两个等长的子序列,则时间复杂度为O(nlog2n); 最坏情况下:快速排序每次划分,只得到一个子序列,这时快速排序蜕化为冒泡排序的过程,其时间复杂度最差,为O(n2)。 快速排序是通常被认为在同数量级(O(nlog2n))的排序方法中平均性能最好的。 快速排序是一个不稳定的排序方法。 返 回 选择排序主要是从待排序列中选取一个关键字值最小的记录,把它与第一个记录交换存储位置,使之成为有序。然后在余下的无序的记录中,再选出关键字最小的记录与无序区中的第一个记录交换位置,又使之成为有序。依次类推,直至完成整个排序。 9-4-1 简单选择排序 1.基本思想 (1)初始状态:整个数组r划分成两个部分,即有序区(初始为空)和无序区。 (2)基本操作:从无序中选择关键字值最小的记录,将其与无序区的第一个记录交换(实质是添加到有序区尾部)。 从初态(有序区为空)开始,重复步骤(2),直到终态(无序区为空)。 9-4 选择排序 2.【例9-6】对:53 36 48 36 60 7 18 41 进行简单选择排序 3.算法 void Selectsort() { for (i=1;in;i++) { h=i; for (j=i+1;j=n;j++) if (R[j].keyR[h].key) // 选择关键字值最小的记录 h=j; if (h!=j) { R[0]=R[i];R[i]=R[h];R[h]=R[0];} // 交换记录 } } 4.效率分析 简单选择排序比较次数与关键字初始排序无关。 找第一个最小记录需进行n-1次比较,找第二个最小记录需要比较n-2次,找第i个最小记录需要进行n-i次比较,总的比较次数为: (n-1)+(n-2)+……+(n-i)+……2+1=n(n-1)/2=n2/2 时间复杂度:O(n2) 辅助空间:O(1) 简单选择排序是不稳定的排序方法。 9-4-2 树形选择排序 树形选择排序照锦标赛的思想进行。比赛开始,将n个参赛选手看成完全二叉树(或满二叉树)的叶结点,共有2n-2或2n-1个结点。首先,两两进行比赛(在树中是兄弟的进行,否则轮空,直接进入下一轮),胜出的再兄弟间再两两进行比较,直到产生第一名。接下来,将第一名的结点看成最差的,并从该结点开始,沿该结点到根的路径上,依次进行各分枝结点子女间的比较,胜出的就是第二名。因为和他比赛的均是刚刚输给第一名的选手。如此,继续进行下去,直到所有选手的名次排定。 【例9-7】 有16个选手参加的比赛,其成绩见图9-5各叶结点的值 图9-5 选手成绩的二叉树 图9-5中,从叶结点开始的兄弟间两两比赛,胜者上升到父结点;胜者兄弟间再两两比赛,直到根结点,产生第一名90。比较次数为 23+22+21+20=24-1=n-1。 图9-6 兄弟间两两比赛后的二叉树 图9-6中,将第一名的结点置为最差的(设为0),与其兄弟比赛,胜者上升到父结点,胜者兄弟间再比赛,直到根结点,产生第二名86。比较次数
您可能关注的文档
最近下载
- 层析包括吸附层析分配层析离子交换层析亲和层析等 (2).pptx VIP
- 2019主持人大赛总决赛第三轮巅峰对决王嘉宁VS邹韵演讲稿.doc VIP
- 《房屋建筑学》第6章 建筑构造概论.ppt VIP
- 2025年河北省涿州三中学初三九月月考物理试题含解析.doc VIP
- 超星尔雅学习通《通识写作怎样进行学术表达(复旦大学)》章节测试答案.docx VIP
- C++龟兔赛跑代码.docx VIP
- 人教新版英语九年级Unit1-4试卷.doc VIP
- C++书写日历代码.docx VIP
- 食品仓储安全保障措施.docx VIP
- 辽宁省抚顺市新抚区2024-2025学年八年级上学期10月月考语文试题.docx VIP
文档评论(0)