找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1895|回复: 3

if(j*m) pd[j]=pd[m];的困惑

[复制链接]
发表于 2009-11-3 04:16:00 | 显示全部楼层 |阅读模式 IP:江苏扬州
# 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]<<' ';
}
发表于 2009-11-3 04:16:01 | 显示全部楼层 IP:江苏扬州
求大家帮忙给指点一下!我实在想不通?
回复

使用道具 举报

发表于 2009-11-3 04:16:02 | 显示全部楼层 IP:江苏扬州
以下是引用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]<<' ';
}
回复

使用道具 举报

发表于 2009-11-3 04:16:03 | 显示全部楼层 IP:江苏扬州
wfpb谢谢你的帮助!
我今天来的晚!看了你的帖子非常高兴!,我正在思考着你的帖子,先道声谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 17:26 , Processed in 0.263391 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表