C语言 冒泡中 for 循环的问题。 新手 看不懂
#include"stdio.h"main(){inta[10];inti,j,t;printf("input10numbers:\n");for(i=1;i<=10;i...
#include"stdio.h"
main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
getch();
return main();
}
这里for i 的3个语句是什么意思啊?有2两句前后 是一样的。我测了下 又缺一不可
为什么要这么运用啊? 展开
main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
getch();
return main();
}
这里for i 的3个语句是什么意思啊?有2两句前后 是一样的。我测了下 又缺一不可
为什么要这么运用啊? 展开
5个回答
展开全部
第一个for是输入10个整数,与冒泡排序的算法无关,你也可以不用这个for而用10个scanf函数,当然这样就辛苦一点
第二个for和第三个for共同实现所有10个数的冒泡排序,第二个for在外层控制排序的次数,每进行一次第三个for循环将一个数排好,j就加1;第三个for在里层实现某一个数的冒泡排序,利用循环将第j个数与其他每一个数相比较,实现这个数的排序,但是第三个for每次只能实现一个数的排序;再配合第二个for循环使j从1到10每一个数都进行一次冒泡排序,从而实现10个数都进行排序
第二个for和第三个for共同实现所有10个数的冒泡排序,第二个for在外层控制排序的次数,每进行一次第三个for循环将一个数排好,j就加1;第三个for在里层实现某一个数的冒泡排序,利用循环将第j个数与其他每一个数相比较,实现这个数的排序,但是第三个for每次只能实现一个数的排序;再配合第二个for循环使j从1到10每一个数都进行一次冒泡排序,从而实现10个数都进行排序
展开全部
第一个
printf("input 10 numbers:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
提示用户输入是个数据;
第二三两个
for(j=1;j<=9;j++) //最多做9趟排序
{
for(i=1;i<=10-j;i++)//对当前无序区R[i .. n-1]自下向上扫描
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
其实冒泡排序的思想就是,
将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。
printf("input 10 numbers:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
提示用户输入是个数据;
第二三两个
for(j=1;j<=9;j++) //最多做9趟排序
{
for(i=1;i<=10-j;i++)//对当前无序区R[i .. n-1]自下向上扫描
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
其实冒泡排序的思想就是,
将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个是循环输入10个数。
第二、三个是嵌套循环,冒泡的操作就是要这样嵌套,外层是冒泡的趟数,内层是每一趟中去比较相邻两个数。具体你仔细看一下冒泡的算法原理就知道了。
第二、三个是嵌套循环,冒泡的操作就是要这样嵌套,外层是冒泡的趟数,内层是每一趟中去比较相邻两个数。具体你仔细看一下冒泡的算法原理就知道了。
追问
冒泡的原理 我挺了解的。这里就是突然看不明白了。
既然一个已经写了 (i=1;i<=10;i++ 。 最后为什么又需要再写一遍呢
追答
你这个三个for循环都没有加{},所以只对他下面的一条语句循环,
第一个循环只有这一条语句:
for(i=1;ia[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
printf("the sorted numbers:\n");
for(i=1;i<=10;i++)
{
printf("%d ",a[i]);
}
getch();
return main();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
回去看课本吧,流程图学会画,基本语法、关键字、基本语句都先学一遍,然后再来看别人写的程序,简单语句都不懂的话,别人怎么给你解释都没用了
如果是算法看不懂,那只是说你还没理解这个算法,上面程序的语句都看不懂的话只是说明你的基本功还没到位,需要回头先去看书
如果是算法看不懂,那只是说你还没理解这个算法,上面程序的语句都看不懂的话只是说明你的基本功还没到位,需要回头先去看书
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以看看冒泡排序的视频,网上也有相关的教学软件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询