c问题数组排序问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 03:25:28
对10个数从大到小排序看看哪错了:
sort (int a[10])
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
{if(a[i]<a[j])
t=a[i];a[i]=a[j];a[j]=t;
}
}
main()
{int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d",a[i]);
sort(a);
for(i=0;i<10;i++)
printf("%d",a[i]);
}
解释为什么错了。

修改完毕.

#include <stdio.h>
sort (int a[10])
{
int i,j,t;
for(i=0;i<9;i++) //注意这行
for(j=i+1;j<10;j++)
{if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;} //注意这行
}
}
main()
{int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");//注意这行
sort(a);
for(i=0;i<10;i++)
printf("%d",a[i]);
}

for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
{if(a[i]<a[j])
t=a[i];a[i]=a[j];a[j]=t; 错了!
是这样的
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(a[k]<a[j]) k=j;
t=a[i];a[i]=a[k];a[k]=t;
}

这里有各种各样的排序,当然包括这个了
http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.1.1.1