第11章查找与排序汇总.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * ?直接选择排序函数模板: 直接选择排序算法是不稳定算法,其平均时间复杂度为O(n2),时间复杂度与元素的初态无关 冒泡排序 基本思想: 从待排序记录集的一端(这里假定为低端)对相邻的两个元素(e0和e1,e1和e2,…,en-2和en-1)依次比较它们的排序码,若不符合排序的顺序要求,就将相应的两个元素互换,此过程称为一趟冒泡排序,最多经过n-1趟冒泡排序,排序工作即可完成。 每趟排序的结果是将待排序记录集中排序码最大的元素交换到待排序记录集最后一个元素的位置。假设在一趟冒泡排序时,从ej+1以后没有发生元素的互换,则说明ej+1以后的元素是已经排好序的,下面只需要在e0到ej范围内进行新一趟的冒泡排序,即待排序记录集是从e0到ej,下一趟只需从e0到ej范围内进行。 冒泡排序(交换排序) 冒泡排序 76 65 49 13 58 27 97 第一趟 第三趟 第四趟 第二趟 97 76 65 49 13 58 27 97 76 65 58 49 13 27 97 76 65 58 49 27 13 97 76 65 58 49 27 13 97 76 65 58 49 27 13 97 76 65 58 49 27 13 第五趟 第六趟 初始状态 #include iostream.h void main(){ int a[10]; for(int i= 0 ; i 10 ; i ++) cin a[i]; int temp; for(i = 0 ; i 10; i++) for(int j = 0 ; j 10 - i - 1; j++) if(a[j] a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1]= temp; } } #include iostream.h void main(){ int a[10]; for(int i = 0; i 10 ; i++) cin a[i]; bool change = true; int temp; for(i = 0 ; i 10 change ; i++){ change = false; //标志置为假,假设未交换 for(int j = 0 ; j 10 – i – 1 ; j++) if(a[j] a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; change = true; //标志置为真,有交换 } } } 算法分析 时间复杂度与元素的初始状态有关。 最好情况下的时间复杂度为O(n)。若待排序元素序列已经有序,则排序工作经一趟处理就可结束。此时,对元素排序码的比较次数为最小值n-1,且没有元素的互换。 最坏情况下的时间复杂度为O(n2)。若待排序元素序列为逆序,则需要进行n-1趟冒泡。每趟要进行n-i-1次排序码的比较和n-i-1次元素的互换。 平均时间复杂度为O(n2)。 冒泡排序算法是稳定的。 97 27 58 13 49 65 76 待排序记录 LastExchangeIndex 27 97 58 13 49 65 76 27 58 97 13 49 65 76 27 58 13 97 49 65 76 27 58 13 49 97 65 76 27 58 13 49 65 97 76 27 58 13 49 65 76 97 待排序记录 第一趟排序结束 27 58 13 49 65 76 97 待排序记录 已排序记录 27 58 13 49 65 76 97 待排序记录 27 58 13 49 65 76 97 27 13 58 49 65 76 97 27 13 49 58 65 76 97 27 13 49 58 65 76 97 27 13 49 58 65 76 97 第二趟排序结束 待排序记录 27 13 49 58 65 76 97 待排序记录 已排序记录 LastExchangeIndex 第三趟排序结束 27 13 49 58 65 76 97 待排序记录 已排序记录 LastExchangeIndex 97 76 65 58 49 27 13 97 76 65 58 49 27 13 冒泡排序函数模板: 快速排序 基本思想: 从待排序的n个元素中任取一个元素,以该元素为基准,用交换的方法将剩下的元素分成两组。第1组中各元素的排序

文档评论(0)

502992 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档