C语言冒泡排序的问题
冒泡排序今设n=10,定义数组长度为11,本例中对a[0]不用,只用a[1]到a[10],以符合人们习惯main(){inta[11];inti,j,t;printf(“...
冒泡排序
今设n=10,定义数组长度为11,本例中对a[0]不用,只用a[1]到a[10],以符合人们习惯
main()
{
int a[11];
int i,j,t;
printf(“input 10 numbers :\n”);
for(i=1;i<11;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for(j=1;j<9;i++)
for(i=1;i<=10;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<11;i++)
printf(“%d”,a[i]);
}
运行情况如下:
Input 10 numbers:
1 0 4 8 12 65 -76 100 -45 123
the sorted numbers
-76 -45 0 1 4 8 12 65 100 123
我想知道每一行代码的意思,也就是讲解,越详细越好,因为我要用来演讲,所以希望用词精准一些详细一些,谢谢各位大侠帮忙了!答案满意会高分赠送的!谢谢! 展开
今设n=10,定义数组长度为11,本例中对a[0]不用,只用a[1]到a[10],以符合人们习惯
main()
{
int a[11];
int i,j,t;
printf(“input 10 numbers :\n”);
for(i=1;i<11;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for(j=1;j<9;i++)
for(i=1;i<=10;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<11;i++)
printf(“%d”,a[i]);
}
运行情况如下:
Input 10 numbers:
1 0 4 8 12 65 -76 100 -45 123
the sorted numbers
-76 -45 0 1 4 8 12 65 100 123
我想知道每一行代码的意思,也就是讲解,越详细越好,因为我要用来演讲,所以希望用词精准一些详细一些,谢谢各位大侠帮忙了!答案满意会高分赠送的!谢谢! 展开
6个回答
展开全部
关键就是这行了哈 我就给你讲讲这几行
for(j=1;j<9;i++)
for(i=1;i<=10;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
这里 实现的是。。每当。。发现一个数值比前面的小。哪么他就前移一位。。从第一位开始。。。一步一步来。。。每当遇到小的就前移。
好 第一个循环。。(j=1到j=2之间算1个循环)把最大的排到了最后一位。。而第二次循环。把倒数第二大的排到了倒数第二位。。就这样慢慢的经过10次循环后就把这一组数重排了。。。。。
其实最好的排序算法还是背包算法比较好点。。
for(j=1;j<9;i++)
for(i=1;i<=10;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
这里 实现的是。。每当。。发现一个数值比前面的小。哪么他就前移一位。。从第一位开始。。。一步一步来。。。每当遇到小的就前移。
好 第一个循环。。(j=1到j=2之间算1个循环)把最大的排到了最后一位。。而第二次循环。把倒数第二大的排到了倒数第二位。。就这样慢慢的经过10次循环后就把这一组数重排了。。。。。
其实最好的排序算法还是背包算法比较好点。。
展开全部
每一行没什么意思,算法的关键是思想
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看错错了,不回答了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
821449239
我QQ号,我可以给你语音讲,写太麻烦了。
我QQ号,我可以给你语音讲,写太麻烦了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2008-07-18
展开全部
就是给别人讲 也要先把程序写对啊
#include<stdio.h>
void main()
{
int a[11];
int i,j,t;
printf("input 10 numbers :\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<10;j++)
for(i=1;i<11-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<11;i++)
printf("%d ",a[i]);
printf("\n");
}
#include<stdio.h>
void main()
{
int a[11];
int i,j,t;
printf("input 10 numbers :\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<10;j++)
for(i=1;i<11-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<11;i++)
printf("%d ",a[i]);
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要想学好它,首先你要把程序写对
#include<stdio.h>
void main()
{
int a[11]; //定义一个长为11的数组
int i,j,t;
printf("input 11 numbers :\n");
for(i=1;i<=11;i++) //循环由键盘输入任意11个数
{
scanf("%d",&a[i]);
}
for(j=1;j<=9;j++)//外部循环
{
for(i=1;i<=10;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<=11;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
其实你的程序有点浪费资源,你这个是升序排列,如果有人输入的就是一个升序排列,其实不必循环,但你写的同样要循环那么多次,但是像这样就不会了,加一个bool 变量来判断它是否已排好,不必多做循环
#include<stdio.h>
void main()
{
int a[11];
int i,j,t;
bool nExChange=false;
printf("input 10 numbers :\n");
for(i=1;i<=11;i++)
{
scanf("%d",&a[i]);
}
for(j=1;j<=9;j++)
{
nExChange=false;
for(i=1;i<=10;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
nExChange=true;
}
}
if (nExChange==false)
{
break;
}
}
printf("the sorted numbers :\n");
for(i=1;i<=11;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
#include<stdio.h>
void main()
{
int a[11]; //定义一个长为11的数组
int i,j,t;
printf("input 11 numbers :\n");
for(i=1;i<=11;i++) //循环由键盘输入任意11个数
{
scanf("%d",&a[i]);
}
for(j=1;j<=9;j++)//外部循环
{
for(i=1;i<=10;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<=11;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
其实你的程序有点浪费资源,你这个是升序排列,如果有人输入的就是一个升序排列,其实不必循环,但你写的同样要循环那么多次,但是像这样就不会了,加一个bool 变量来判断它是否已排好,不必多做循环
#include<stdio.h>
void main()
{
int a[11];
int i,j,t;
bool nExChange=false;
printf("input 10 numbers :\n");
for(i=1;i<=11;i++)
{
scanf("%d",&a[i]);
}
for(j=1;j<=9;j++)
{
nExChange=false;
for(i=1;i<=10;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
nExChange=true;
}
}
if (nExChange==false)
{
break;
}
}
printf("the sorted numbers :\n");
for(i=1;i<=11;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询