数据结构利用冒泡排序算法进行排序.docVIP

数据结构利用冒泡排序算法进行排序.doc

  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文档。上传文档
查看更多
利用冒泡排?序算法进行?排序 项目说明: 该算法是用?来实现数据?排序的。 利用冒泡算?法对自动生?成的一百个?数字进行排?序,冒泡排序是?一种典型的?交换排序方?法,基本思路是?:通过无序区?中相邻记录?关键字间的?比较和位置?的交换,使关键字最?小的记录如?气泡一般逐?渐往上“漂浮”直到“水面”。整个算法是?从最下面的?记录开始,对每两个相?邻的关键字?进行比较,且使关键字?较小的记录?换至关键字?较大的记录?之上,使得经过排?序之后,关键字最小?的记录到达?最上端。 该项目的调?试环境为V?isual?C++,该环境的使?用过程为: 如图为进入?该环境所需?要的步骤: 该图为进入?VC环境的?第一步,其说明了要?调试该项目?所要选择的?一些内容: 如图二为第?二步在该不?中我们要选?择第三个类?型: 如图为我们?完成以上步?骤后所得出?的结果: 下面为我所?调试的项目?: 源码分析: 冒泡排序的?算法过程如?下: #defin?e Max 100 void bubso?rt(int r[],int n) /*冒泡排序*/ { int i,j,k; int temp; for(i=0;in;i++) {for(j=n-1;ji;j--) if(r[j]r[j-1]) /*如果a[j]比前面a[j-1]的小,则交换向上?浮*/ { /*交换数组a?[j]和a[j-1]*/ temp=r[j]; r[j]=r[j-1]; r[j-1]=temp; } print?f( i=%d,i); for(k=0;kn;k++) print?f(%2d,r[k]); print?f(\n); } } 该代码的实?现过程就是?: 依次比较相?邻的两个数?,将小数放在?前面,大数放在后?面。即首先比较?第1个和第?2个数,将小数放前?,大数放后。然后比较第?2个数和第?3个数,将小数放前?,大数放后,如此继续,直至比较最?后两个数,将小数放前?,大数放后。重复以上过?程,仍从第一对?数开始比较?(因为可能由?于第2个数?和第3个数?的交换,使得第1个?数不再小于?第2个数),将小数放前?,大数放后直?到排好。 int i,u; int a[100]; srand?((unsig?ned)time(NULL)); FILE *fp; fp = fopen?(data1?.dat, w); for(i=0;i100;i++) { u=rand()%1000; while?(u100u999) { u=rand()%1000; } fprin?tf(fp, %d , u);//将这些整数?写入到数据?文件dat?a1.dat中 } fclos?e(fp); fp = fopen?(data1?.dat, r); for(i=0;i100;i++) { fscan?f(fp,%d,a[i]);//从数据文件?data1?.dat中读?出数据 } fclos?e(fp); bubso?rt(a,100); fp = fopen?(data2?.dat, w); for(i=0;i100;i++) { fprin?tf(fp,%d ,a[i]);//将排好序的?数据序列写?入写入到数?据文件da?ta2.dat中 } fclos?e(fp); } 其中自动生?成数字的代?码为: srand?((unsig?ned)time(NULL)); fp = fopen?(data1?.dat, w); for(i=0;i100;i++) { u=rand()%1000; while?(u100u999) { u=rand()%1000; } fprin?tf(fp, %d , u); } 将生成的数?字先放在文?件data?1中然后在?取出经过排?序后再存放?到文dat?a2中。 该算法的运?行结果如图?所示: 实验总结 通过此次实?验我总结出?了如下的一?些冒泡排序?的基本思想?: 单向冒泡排?序算法 1、从上向下冒?泡的冒泡排?序的基本思?想是: (1)首先将第一?个记录的关?键字和第二?个记录的关?键字进行比?较,若为“逆序”(即L.r[1].keyL.r[2].key),则将两个记?录交换之,然后比较第?二个记录和?第三个记录?的关键字。依次类推,直至第n-1个记录的?关键字和第?n个记录的?关键字比较?过为止。这是第一趟?冒泡排序,其结果是使?得关键字最?大的记录被?安置到最后?一个记录的?位置上; (2)然后进行第?二趟冒泡排?序,对前面

文档评论(0)

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

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

1亿VIP精品文档

相关文档