| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 564 人关注过本帖
标题:请教个位高手了,帮帮忙
只看楼主 加入收藏
水里无氧气
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-3-26
收藏
 问题点数:0 回复次数:1 
请教个位高手了,帮帮忙
冒泡排序法,我怎么就没弄明白到底是怎么个意思呢,
请高人指点并做个例子让俺看看,有题帮忙理解吗
谢谢
2005-06-07 18:18
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
收藏
得分:0 
比如有一组数: 6,5,4,2,8,9,1,3,7
如果是从小到大的排列顺序的话:应该是1,2,3,4,5,6,7,8,9。是人就懂。
冒泡法是这样的:首先比较第一个和第二个,即6和5 ,6比5 大,交换两个数位置,变为5,6,4,2。。。。。。

然后比较第二个和第三个,即6和4,6比4 大,交换位置,变为5,4,6,2,。。。。。。

同理,继续比较后面的数,很像冒泡泡,所以称为冒泡法。这样比较一趟后变为

5,4,2,6,8,1,3,7,9。

然后再从头开始再一趟的比较,直到排列完成,共需做n趟,这里是9趟。

还不明白就看看程序:

#include<stdio.h>
#include<conio.h>
void main()
{
 int i,j,t,n,temp;
int a[30];  /*用数组存储要排列的数,最大为30个数,自己定义*/
printf("输入要排列的数字个数:");
scanf("%d",&n);
for(t=0;t<n;t++)
scanf("%d",&a[t]);
/***开始排列****/
for(i=0;i<n;i++)
   for(j=0;j<n-1;j++)
   {
     if(a[j]>a[j+1])
     {
      temp=a[j];a[j]=a[j+1];a[j+1]=temp;/*交换位置*/
     }
    }
/*排列完成,输出*/
for(i=0;i<n;i++)
printf("%2d",a[i]);
prinf("\n");
getch();
}
}

我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2005-06-07 20:12
快速回复:请教个位高手了,帮帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011356 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved