C语言选择法排序,有时排序正确,有时异常,求大神指教
C语言选择法排序,有时排序正确,有时错误,求大神指教
#include<stdio.h>
int main()
{
int i,j;
int a[10];
int temp;
int k;
printf("为数组元素赋初值:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if(a[j]<a[i])
k=j;
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
for (i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
------解决方案--------------------
#include<stdio.h>
int main()
{
int i,j;
int a[10];
int temp;
int k;
printf("为数组元素赋初值:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if(a[j]<a[i])
k=j;
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
for (i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
------解决方案--------------------
for(j=i+1;j<10;j++)
{
if(a[j]<a[k])//这儿错了把i改成k就行了,自己想想逻辑上的问题
k=j;
}