关于C语言冒泡排序法要详解

#include<stdio.h>voidmain(){inta[10]={8,9,1,6,4,2,7,3,5};inti,j,k;//for(i=0;i<8;i++)f... #include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;
//for(i=0;i<8;i++)
for(j=0;j<10;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");
//getch();
}

运行后结果没有了9。9跑哪去了。高手详细给说一下。谢谢
还有个问题,第一个for循环。for(i=0;i<8;i++)参与扫描
a[]={8,9,1,6,4,2,7,3,5}
如果参与了可循环里面并没有出现a[i]啊。
展开
 我来答
w2946291
2010-08-06 · TA获得超过149个赞
知道答主
回答量:308
采纳率:0%
帮助的人:240万
展开全部
for(j=0;j<10;j++)
这一句 有问题。改为 for(j=0;j<8;j++)
注意 a中只有9项,a[n]最大只能是a[8];

#include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;

for(i=0;i<9;i++)
{
for(j=0;j<8;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");

}
这是修改过的正确的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luopeng0404
2010-08-06 · TA获得超过120个赞
知道答主
回答量:123
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
void main()
{
int a[9]={8,9,1,6,4,2,7,3,5};
int i,j,k;
for(i=0;i<9;i++)
for(j=i+1;j<9;j++)
{
if(a[i]>a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");
}

对比一下自己的程序吧 你原来多设了一个数 但是你只有9个冒泡的时候要用双重循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feima_1
2010-08-06
知道答主
回答量:31
采纳率:0%
帮助的人:23万
展开全部
首先,你的冒泡排序有问题,冒泡排序是大数沉底,两重循环,丢了9是因为
for(j=0;j<10;j++)这句,以下是改好的程序
#include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;
for(i=0;i<=8;i++)
for(j=0;j<=7-i;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");

//getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZTristin
2010-08-06
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
数组元素进行比较的时候,下标不对。
#include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;
for(i=0;i<8;i++)
for(j=i;j<8;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");
//getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牧念露0H
2010-08-06 · TA获得超过248个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:263万
展开全部
#include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;
//for(i=0;i<8;i++)
for(j=0;j<10;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
for(j=0;j<9;j++)=>for(j=0;j<10;j++) 9在j[9]中
{
printf("%d ",a[j]);
}
printf("\n");
//getch();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式