网站大量收购闲置独家精品文档,联系QQ:2885784924

专升本数据结构排序算法.docVIP

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

2013年福建省高职高专升本应试材料---数据结构排序 计算机科学类---数据结构排序大题 1、直接插入排序(Insert Sort) 时间复杂度为O(n2 ) 基本流程:当插入第i个对象时,前面的p-elem [0], p-elem [1],…, p-elem [i-1]已经排好序,此时,用v[i]的关键字与p-elem [i-1], p-elem [i-2],…的关键字顺序进行比较,找到插入位置即将p-elem [i]插入,原来位置上对象向后顺移。 举例: i (1) (2) (3) (4) (5) (6) (0) [21] 25 49 25* 16 08 25 1 [21 25] 49 25* 16 08 49 2 [21 25 49] 25* 16 08 25* 3 [21 25 25* 49] 16 08 16 4 [16 21 25 25* 49] 08 08 5 [08 16 21 25 25* 49] 插入排序算法为: void insertSort(S_TBL *p) {for(i=2;i=p-length;i++) if(p-elem[i].key p-elem[i-1].key)/*小于时,需将elem[i]插入有序表*/ {p-elem[0].key=p-elem[i].key; /*为统一算法设置监测*/ for(j=i-1;p-elem[0].key p-elem[j].key;j--) p-elem[j+1].key=p-elem[j].key;/*记录后移*/ p-elem[j+1].key=p-elem[0].key; /*插入到正确位置*/ } } 2、 冒泡排序 时间复杂度为O(n2) 方法:对n个记录的表,第一趟冒泡得到一个关键码最小的记录r[0],第二趟冒泡对n-1个记录的表,再得到一个关键码次小的记录r[1],如此重复,直到n个记录按关键码有序的表。 举例: i (0) (1) (2) (3) (4) (5) 21 25 49 25* 16 08 1 08 21 25 49 25* 16 2 08 16 21 25 49 25* 3 08 16 21 25 25* 49 4 08 16 21 25 25* 49 冒泡排序算法: void bublesort(elemtype *r) { int i,j; elemtype temp; for(i=0;in-1; i++) for(j=n-2;j=i;j--) if(r[j+1].keyr[j].key) { temp=r[j+1]; r[j+1]=r[j]; r[j]=temp;} } 3、选择排序 时间复杂度为O(n2) 操作方法:第一趟,从n个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1个记录中再选出关键码最小的记录与第二个记录交换;如此,第i趟,则从第i个记录开始的n-i+1个记录中选出关键码最小的记录与第i个记录交换,直到整个序列按关键码有序。 举例: 算法: void SelectSort(S_TBL *s) { int i,j,k; for(i=0;is-length;i++) /* 作length-1趟选取 */ { k=i ; for(j=i+1;j=s-length;j++) { /* 在i开始的length-n+1个记录中选关键码最小的记录 */ if(s-elem[k].keys-elem[j].key) k=j; } /* t中存放关键码最小记录的下标 */ s-elem[k]--s-elem[i]; /*

文档评论(0)

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

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

1亿VIP精品文档

相关文档