| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 781 人关注过本帖
标题:[求助]这一程序怎么解释啊 高手请教(急)
只看楼主 加入收藏
HR岩
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
 问题点数:0 回复次数:13 
[求助]这一程序怎么解释啊 高手请教(急)
#include<iostream,h>
void halfsort(int data[],int leadings,int size)
{ for(int i=0;i<leadings;i++)
{ int s=i;
for(int j=i+1;j<size;j++)if(data[j]>data[s])s=j;
if(s!=i){int x=data[i];data[i]=data[s];data[s]=x;}}}
void main()
{ int a[]={21,12,53,74,25,16,7,38};
halfsort(a,3,8);
for(int i=0;i<8;i++)cout<<a[i]<<' ';}
程序结果是74 53 38 21 25 16 7 12


搜索更多相关主题的帖子: 解释 
2007-01-21 00:30
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 
格式哦!
貌似像是排序,可7为什么不参加呢?

我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2007-01-21 00:34
HR岩
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
得分:0 
什么 7 不参加啊
不是有在吗
快考试了
问了同学都不知道怎么给我解释
所以就来这看看了
帮帮忙啊
2007-01-21 00:37
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 
这道题是排序问题,首先主函数部分是一个叫halfsort的函数,然后循环的作用是输出这个数组。再来看halfsoft这个函数,顾名思义就是半数排序,首先传递参数,第一个参数是数组首地址,第二个是排序的次数,第三个是数组大小。传递到函数后leadings=3,size=8,这样可以写成:
void halfsort(int data[],int leadings,int size)
{ for(int i=0;i<3;i++)
{ int s=i;/*这里的作用是把第一个数的位置告诉s*/
for(int j=i+1;j<8;j++) /*开始排序,一共有8个元素,但只做7次*/
if(data[j]>data[s]) s=j;/*如果后面元素,比第一个大就把位置用s纪录下来*/
if(s!=i) /*如果s改变了,就说明有比第一个数大的元素,就把这个大的数字和第一个交换*/
{int x=data[i];
data[i]=data[s];
data[s]=x;
}
}
}
最后从第二个再开始排序

我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2007-01-21 01:00
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 
因为是半数排序,本来是7次的排序只做了3次,如果把第二个参数改成7的话我想应该能得到一个从大到小的数列,这其实是一种排序方法的变形,好像是冒泡排序法

我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2007-01-21 01:04
HR岩
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
得分:0 

还是不怎么明白
因为答案又不是从大到小的排序
很奇怪这个答案
怎么看怎么就不能理解

2007-01-21 03:24
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 
你把第二个参数该成7就成从大到小的排序了

我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2007-01-21 06:07
jianchinuli
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-1-19
收藏
得分:0 

void halfsort(int data[],int leadings,int size)
这个函数的功能是:
把data[]中的size个数的最大的leadings个数按从大到小的顺序排在data[]的前leadings个位置,
剩下的就不管它们了!!
排序的方法是  选择排序

2007-01-21 14:47
HR岩
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
得分:0 
题目怎么可以改
改了就不是原来我想要的解释了

楼上的 怎么去排序
答案一点规律都没 我看不出来
2007-01-21 15:29
HR岩
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
得分:0 
怎么没人理我拉
2007-01-25 19:03
快速回复:[求助]这一程序怎么解释啊 高手请教(急)
数据加载中...
 
   



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

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