| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 679 人关注过本帖
标题:有错就是找不到,急啊!
只看楼主 加入收藏
蓝调
Rank: 1
来 自:火星
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-12-19
收藏
 问题点数:0 回复次数:3 
有错就是找不到,急啊!
# 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 
2007-12-30 09:49
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
似乎是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]]

2007-12-30 10:54
蓝调
Rank: 1
来 自:火星
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-12-19
收藏
得分:0 
谢谢啊

科学是领跑者的世界,而不是追随者!
2007-12-30 10:59
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
看了下你的程序.
是不是要实现最终从小到大的排序呢?
2007-12-30 11:33
快速回复:有错就是找不到,急啊!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015524 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved