课件_15094.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课件_15094

算法实现(排升序) 类型为整形数组 void SelectSort(int a[], int n) { int i, j, p, t; /*p为某趟比较中记录最小元素的下标*/ for (i=0; in-1; i++) /*每趟找出的最小值交换到i号位置*/ { /*在下标i~n-1范围内选最小元素,由p记录该元素的下标*/ p=i; for( j=i+1;jn ; j++) if ( a[j] a[p]) p=j; /*选出的最小元素(p下标)与i下标的元素交换*/ if(p!=i) { t=a[p]; a[p]=a[i]; a[i]=t;} } 算法实现(排升序) 类型为顺序表 void SelectSort( Table r) { int i, j, p; datatype t; for (i=0; i r-len-1; i++) {/*在下标i~len-1范围内选最小元素,由p记录该元素的下标*/ p=i; for( j=i+1;j r-len ; j++) if ( r-data[j].key r-data[p].key) p=j; /*选出的最小元素(p下标)与i下标的元素交换*/ if(p!=i) { t= r-data[p]; r-data[p]=r-data[i] ; r-data[i] =t;} } 效率分析 时间效率 比较次数与记录初始状态无关: 时间复杂度:T(n)= O(n2) 交换次数: 最好情况(正序) 0 最坏情况(逆序) n-1 空间效率 一个额外的空间来存储临时下标,故空间复杂度为O(1)。 稳定性 不稳定的(如:5 5 3 排序结果为:3 5 5 ) 排序方法 平均时间 辅助存储 最坏情况 稳定性 直接插入排序 快速排序 O(n2) O(n2) O(1) O(nlog2 n) O(n2) O(log2n) 不稳定 稳定 10.5 各种排序方法的比较讨论 冒泡排序 O(n2) O(n2) O(1) 稳定 直接选择排序 O(n2) O(n2) O(1) 不稳定 注:(1)直接插入排序有可能最后一趟之前所有元素都不是最终排序位置;最好情况下只要比较n-1次,时间复杂度为O(n),故事先有序选择直接插入排序。 (2) 快速排序事先有序效率最低,退变成冒泡排序 * * * * * * * * 算法实现(大者下沉) : 类型为整型数组 void Bubble (int a[ ], int n) { int i, j, t; for(i=n-1; i=1; i--) /*最大值移到目的位置i */ for(j=0;ji; j++) /*每趟找最大值范围0~i-1*/ if(a[j] a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } 算法实现(大者下沉) : 类型为顺序表 void Bubble (Table r) { int i, j; datatype t; for(i= r-len-1; i=1; i --) for(j=0;j i; j++) if( r-data[j].key r-data[j+1].key) { t=r-data[j]; r-data[j]=r-data[j+1]; r-data[j+1]=t; } } 比较的是关键字 交换的是整个记录 算法描述(从后往前扫描,小者上冒): 找第1个最小值,上移到0号位置 j: 从下标 n-1 ~ 1 把 j 下标的元素与 j-1 下标的元素比较,若 j元素 j-1元素,则交换,否则不动 找第2个最小值,上移到1号位置 j:从下标 n-1 ~ 2 把 j 下标的元素与 j-1 下标的元素比较,若 j元素 j-1元素,则交换,否则不动 找第i+1个最小值,上移到i号位置 j:从下标 n-1 ~ i+1 把 j 下标的元素与 j-1 下标的元素比较,若 j元素 j-1元素,则交换,否则不动 …… 找第n-1

文档评论(0)

maxmin + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档