- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)然后进行第?二趟冒泡排?序,对前面
您可能关注的文档
最近下载
- 2022年江苏省南京市玄武区九年级上学期期末物理试卷(含答案).docx VIP
- 居民死亡医学证明书.doc VIP
- 第二届中国电子商务三创大赛创业杯参赛方案茶香书社电子商务系统.doc VIP
- 2024年郴州临武县事业单位招聘考试真题.pdf VIP
- 公司果蔬坚果加工工岗位工艺作业操作规程.docx VIP
- 广东省市场调节价医疗服务价格项目目录(2021年版).pdf VIP
- 第二届中国电子商务三创大赛“创业杯”参赛方案“茶香书社”电子商务.docx VIP
- 林德(杭州)空分设计标准.doc VIP
- 全面解析电磁兼容技术-完整版.pdf VIP
- 铁路危险货物运输的安全管理工作浅析(2025) .pdf VIP
原创力文档


文档评论(0)