| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 479 人关注过本帖
标题:if(j>m) pd[j]=pd[m];的困惑
只看楼主 加入收藏
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
 问题点数:0 回复次数:3 
if(j>m) pd[j]=pd[m];的困惑

# include<iostream.h>
//这是一个排序函数并未进行数据位置交换,但却能正确的排序

template < int size,class T >
void show_in_order(T date[])//排序函数
{
T *pd[size];
int m;
for(m=0;m<size;m++)
pd[m]=&date[m];
for(m=0;m<size-1;m++)
{
int j=m;
for(int i=m+1;i<size;i++)
if(*pd[i]<*pd[j])
j=i;
cout<<*pd[j]<<' '; //(我测试的数据是[8,7,6,5]如果去掉下面这个语句if(j>m) pd[j]=pd[m];cout<<*pd[size-1];)
//问题1:我想这句话应该输出的为(5,5,5,5)但是输出为(5,5,5)为什么?

if(j>m) pd[j]=pd[m]; ////因为我测试的数据是[8,7,6,5]所以j>m总是成立,
//问题2:这句话if(j>m) pd[j]=pd[m];的是的作用主要体现在何处?
}
cout<<*pd[size-1];
}

void main()
{
int Date[]={8,7,6,5};
# define Size sizeof(Date)/sizeof(Date[0])
int m;
cout<<endl<<"排序前:";
for (m=0;m<Size;m++)
cout<<Date[m]<<' ';
cout<<endl<<"排序效果:";
show_in_order<Size>(Date);
cout<<endl<<"排序后:";
for(m=0;m<Size;m++)
cout<<Date[m]<<' ';
}

[此贴子已经被作者于2006-8-21 11:10:45编辑过]

搜索更多相关主题的帖子: 困惑 
2006-08-19 21:50
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
得分:0 

求大家帮忙给指点一下!我实在想不通?

2006-08-21 17:38
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
以下是引用lixang在2006-8-19 21:50:54的发言:

# include<iostream>
//这是一个排序函数并未进行数据位置交换,但却能正确的排序

using namespace std;
//这是一个排序函数并未进行数据位置交换,但却能正确的排序

template < int size,class T>
void show_in_order(T date[])//排序函数
{
T *pd[size];
int m;
for(m=0;m<size;m++)
pd[m]=&date[m];
for(m=0;m<size-1;m++)
{
int j=m;
for(int i=m+1;i<size;i++)
if(*pd[i]<*pd[j])
j=i;
cout<<*pd[j]<<' ';//因为循环次数为size-1,所以输出3次
//前两次输出最小的5,6
//整个函数并没有达到排序的效果,但是达到的输出的效果,也就是说
//输出5,6并没有排序。7,8在下面的关系式中被排序(最后两个位置*pd[2],*pd[3]),然后由于关系式
//if(*pd[i]<*pd[j])不满足,所以直接输出*pd[2].
if(j>m) pd[j]=pd[m];
}
//所以正个循环以后输出的是5,6,*pd[2]。
cout<<*pd[size-1];//然后输出*pd[3].
//此时:*pd[0]=8,*pd[1]=7,*pd[2]=7,*pd[3]=8
}

void main()
{
int Date[]={8,7,6,5};
# define Size sizeof(Date)/sizeof(Date[0])
int m;
cout<<endl<<"排序前:";
for (m=0;m<Size;m++)
cout<<Date[m]<<' ';
cout<<endl<<"排序效果:";
show_in_order<Size,int>(Date);
cout<<endl<<"排序后:";
for(m=0;m<Size;m++)
cout<<Date[m]<<' ';
}


[此贴子已经被作者于2006-8-22 13:10:17编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-22 13:06
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
得分:0 
wfpb谢谢你的帮助!
我今天来的晚!看了你的帖子非常高兴!,我正在思考着你的帖子,先道声谢谢!
2006-08-22 21:43
快速回复:if(j>m) pd[j]=pd[m];的困惑
数据加载中...
 
   



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

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