关于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]啊。 展开
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]啊。 展开
6个回答
展开全部
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");
}
这是修改过的正确的。
这一句 有问题。改为 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");
}
这是修改过的正确的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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个冒泡的时候要用双重循环
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个冒泡的时候要用双重循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,你的冒泡排序有问题,冒泡排序是大数沉底,两重循环,丢了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();
}
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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组元素进行比较的时候,下标不对。
#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();
}
#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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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();
}
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();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询