当前位置: 代码迷 >> C语言 >> 有错就是找不到,急啊!
  详细解决方案

有错就是找不到,急啊!

热度:78   发布时间:2007-12-30 09:49:29.0
有错就是找不到,急啊!
# 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]);
}
简单排序,每轮至多交换一次,不是单纯的选择法或起泡法。
谢谢大家帮忙啊!!!
搜索更多相关的解决方案: max  include  

----------------解决方案--------------------------------------------------------
似乎是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]]
----------------解决方案--------------------------------------------------------
谢谢啊
----------------解决方案--------------------------------------------------------
看了下你的程序.
是不是要实现最终从小到大的排序呢?
----------------解决方案--------------------------------------------------------
  相关解决方案