求解,关于选择排序,这是为什么啊啊啊啊啊~~
#include<stdio.h>
void main()
{
int i,j,temp,min,a[10];
for(i=0;i<=9;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<=9;i++)
{
printf("%5d",a[i]);
}
printf("\n");
for(i=0;i<=8;i++)
{
min=i;
for(j=i+1;j<=9;j++)
{
if(a[min]<a[j])
{
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
}
printf("\n");
for(i=0;i<=9;i++)
{
printf("%5d",a[i]);
}
printf("\n");
}
两次执行的结果如下:请问这是为什么????? 

程序的问题在哪儿,为什么会导致这种结果???
[解决办法]
#include<stdio.h>
void main()
{
int i,j,temp,min,a[10];
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<=9;i++)
{
printf("%5d",a[i]);
}
printf("%s\n","------------------------------转换后----------------------------------");
for(i=0;i<=8;i++)
{
min=i;
for(j=i+1;j<=9;j++)
{ // 注意for括号位置
if(a[min]<a[j])
{
min=j;
}
}
if(i!=min)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
for(i=0;i<=9;i++)
{
printf("%5d",a[i]);
}
printf("\n");
}
{
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
}
printf("\n");
for(i=0;i<=9;i++)
{
printf("%5d",a[i]); //輸出排好序的數據
}
printf("\n");
}
[解决办法]
http://blog.csdn.net/morewindows/article/details/7961256
[解决办法]
给你的排序修改了一下
你是看书上的选择排序吧
其实书上的是有错误的
给你修改了一下
主要就是对于交换起点的控制,你这里的min如果是交换了的话,min的位置就不再是i了,而是j了,但是我们要进行比较的还是从i开始继续往后比较的,但是你写的就不是了,而是j了(书上也是这样)
下面是我修改的