一个C语言问题
一个典型的选择排序算法的程序,但我只知道代码如何写,并不知道这种方法的运行原理,希望高手能给个解答,代码如下#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int a[10];int i,j,k,m;
printf("请输入需要排序的数,用空格隔开,以回车结束:");for(i=0;i<10;i++){scanf("%d",&a[i]);}a:for(i=0;i<9;i++){k=i;for(j=i+1;j<10;j++){if(a[k]>a[j])k=j;if(k!=i){m=a[i];a[i]=a[k];a[k]=m;}}}printf("");for(i=0;i<10;i++){printf("%d",a[i]);}return 0;}
而且,我输入9 5 3 0 1 4 8 2 6 7这10个数字,输出的却是0213456789.希望高手解答我的两个问题
补充:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a[10];
int i,j,k,m;
printf("请输入需要排序的数,用空格隔开,以回车结束:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
a:
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if(a[k]>a[j])
k=j;
if(k!=i)
{
m=a[i];
a[i]=a[k];
a[k]=m;
}
}
}
printf("");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
return 0;
}
追问:嗯,谢谢,我想的用m来当一个中介,就是调换值的时候的中介而已,(k!=i)其实意义不大,是原来写了个循环,但后面发现用不了,就干脆条件永久是真就一直执行就是了。还有我希望您能告诉我为什么输出是0213456789