请编程高手看一下我这个选择排序程序有什么问题(C语言)

来源:百度知道 编辑:UC知道 时间:2024/06/01 05:17:13
#include<stdio.h>
void main()
{
int i,j,min,m,n,a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
min=i;
m=a[i];
for(j=i+1;j<10;j++)
{
n=a[j];
if(a[i]>a[j])
{
a[i]=n;
a[j]=m;
min=j;
}
}
}
for(i=0;i<10;i++) printf("%5d",a[i]);
}

m=a[i];要放在j的循环里,n=a[j];的前面,而且你这种算法,min变量是没有用处的.

正确代码如下
#include<stdio.h>
void main()
{
int i,j,min,m,n,a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
m=a[i];
n=a[j];
if(a[i]>a[j])
{
a[i]=n;
a[j]=m;
}
}
}
for(i=0;i<10;i++) printf("%5d",a[i]);
}

帮你改了下,主要是交换数据的时候没对
#include<stdio.h>
void main()
{
int i,j,a[10],temp;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<10;i++) printf("%5d",a[i]);
}

第二个for(i=0;i<10;i++) m=a[i];下一个for里面
#include<