冒泡排序法
#include<stdio.h>int main(void)
{ int num,i,j;
printf("请输入要排序的数字个数\n");
scanf("%d",&num);
int a[(num-1)];
for(i=0;i<num;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[(num-1)]);
}
for(i=0;i<=num;i++)
{
for(j=(i+1);j<=num;j++)
{
int temp;
if(a>a)
{
temp=a;
a=a;
a=temp;
}
}
}
printf("排序后是:\n");
for(i=0;i<num;i++)
{
printf("%d\t",a);
}
return 0;
}
大神们,这个冒泡排序法,运行出来怎么不对?运行结果如下:
请输入要排序的数字个数
6
a=8
a=3
a=5
a=1
a=7
a=6
排序后是:
0 6 32 4214907 4214907 1985372658
--------------------------------
Process exited with return value 0
Press any key to continue . . .
很多零碎的错误。帮你修改了。
#include<stdio.h>
int main(void)
{ int num,i,j;
printf("请输入要排序的数字个数\n");
scanf("%d",&num);
int a;//这里为什么要减1
for(i=0;i<num;i++)
{
printf("a[%d]=",i);
scanf("%d",&a);//这里难道不应该是a吗
}
for(i=0;i<num-1;i++)//这里应该是小于num-1
{
for(j=(i+1);j<num;j++)//这里应该是小于num
{
int temp;
if(a>a)
{
temp=a;
a=a;
a=temp;
}
}
}
printf("排序后是:\n");
for(i=0;i<num;i++)
{
printf("%d\t",a);
}
return 0;
} 真不错
页:
[1]