有错就是找不到,急啊!
# include <stdio.h>void main()
{
int i,j,k,max,a[5]={3,8,9,6,7};
max=0;
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(a[max]<a[j+1])
max=j+1;
}
if(max!=j+1)
{
k=a[max];
a[max]=a[j+1];
a[j+1]=k;
}
max=0;
}
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
简单排序,每轮至多交换一次,不是单纯的选择法或起泡法。
谢谢大家帮忙啊!!!
----------------解决方案--------------------------------------------------------
似乎是for循环和数组还掌握得不是很好...
排序有很多种,个人不觉得你这个算法有多么好...
只是在你的基础上,把错误改一下...
# include <stdio.h>
void main()
{
int i,j,k,max,a[5]={3,8,9,6,7};
max=0;
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(a[max]<a[j+1])
max=j+1;
}
if(max!=j) //你忽略了上面for循环结束时,j=4-i
{
k=a[max];
a[max]=a[j]; //这里
a[j]=k; //这里
}
max=0;
}
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
[[italic] 本帖最后由 blueboy82006 于 2007-12-30 10:56 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
谢谢啊
----------------解决方案--------------------------------------------------------
看了下你的程序.
是不是要实现最终从小到大的排序呢?
----------------解决方案--------------------------------------------------------