程辅上的问题!谢谢各位大侠能指点!!

xfr_1982 2003-08-24 10:45:56
请教:
函数merge将2个从小到大的有序数组a和b合并成一个新的从小到大的有序数列c,其中形参n和m分别是数组a和b的元素个数!
程序如下:
void merge(int a[],int n,int b[],int m,int *c)
{
int i,j;
i=j=0;
while(i<n && j<m) *c++=a[i]<b[j]?a[i++] : b[j++];
while (i<n) *c++=a[i++];
while (j<m) *c++=b[j++];
}
问题就出在第一个while中,例如有如下的两个生序数组:
n=4 a 1 , 3, 5, 7
m=6 b 2 , 4, 6, 8, 10, 12
用第一个while循环能不能使:
a: 1, 3, 5, 7
b: 2, 4, 6, 8
排序成 c: 1 ,2 , 3, 4, 5, 6, 7, 8 吗??
好象不能呢?是不是清华版的程辅出错了?还是我菜啊!!请大虾出招把!小弟接招了!!!谢谢!非常谢谢!!
请讲仔细点可以?小第会另开给分的!!!
...全文
32 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liao2001 2003-08-27
  • 打赏
  • 举报
回复
晕,把我吓一跳,我以为有一阵不写代码就隔屁了呢,原来我没看错~~~汗
cdxiaogan 2003-08-27
  • 打赏
  • 举报
回复
*c++=a[i]<b[j]?a[i++] : b[j++];
if a[i]<b[j],then *c=a[i] ,and do c++,i++
else *c=b[j] , and do c++, j++;
a[i++]就是先对a[i]进行操作,然后i++
关于++ 的问题,你搜索一下以前的多得很
sevecol 2003-08-27
  • 打赏
  • 举报
回复
首先是设置两个游标分别指向两个数组的开始。
然后开始循环,循环的结束的条件是有一个数组遍历完成。
循环中的操作就是根据两个数组的游标取小的一个数据,然后相应的游标++.

上面的这个循环结束后,我们就还剩下一个数组的一部分没有加入到我们的新的数组中。
只需要调用循环将剩下的元素添加就OK了。
xfr_1982 2003-08-27
  • 打赏
  • 举报
回复
各位你们好:
我知道程序是对的!我想请各位高手说说为什么:
n=4 a 1 , 3, 5, 7
m=6 b 2 , 4, 6, 8, 10, 12
用第一个while循环能使:
a: 1, 3, 5, 7
b: 2, 4, 6, 8
排序成 c: 1 ,2 , 3, 4, 5, 6, 7, 8
讲讲其中的道理!谢谢各位!!尤其是其中的i++和j++的含义!!谢谢!小弟会另开帖子给各位大侠送分的!!
cdxiaogan 2003-08-27
  • 打赏
  • 举报
回复
几句伪码就吓楼上的一跳,好笑~~
cdxiaogan 2003-08-26
  • 打赏
  • 举报
回复
清华的没错!
楼主最好先调试调试,在大脑中调试完后要在机器上调试,这样才使正确的学习方法。
楼上的测试程序没错,可以作为证明。

yjh1982(血精灵) 的程序在算法上倒是有问题啊,不知你有没有看懂题意,哈
wbh0360 2003-08-25
  • 打赏
  • 举报
回复
测试代码
void main(){
int a[]={1,3,5,7};
int b[]={2,4,6,8,10,12};
int c[sizeof(a)/sizeof(int)+sizeof(b)/sizeof(int)];
merge(a,sizeof(a)/sizeof(int),b,sizeof(b)/sizeof(int),c);

for(int i=0;i<sizeof(c)/sizeof(int);i++)
printf("%d ",c[i]);
}
wbh0360 2003-08-25
  • 打赏
  • 举报
回复
清华书上的代码ok啊!
怎么回有问题呢?!
我试国了。
cdxiaogan 2003-08-25
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2174/2174579.xml?temp=.5038568
可以参考这个
yjh1982 2003-08-25
  • 打赏
  • 举报
回复
void merge(int a[],int n,int b[],int m,int *c)
{
int i,j;
i=j=0;
while(i<n && j<m) *c++=a[i]<b[j]?a[i++] : b[j++];
while (i<n) *c++=a[i++];
while (j<m) *c++=b[j++];
}
改为
void merge(int a[],int n,int b[],int m,int *c)
{
int i,j;
i=j=0;
while(i<n && j<m)
{
*c++=a[i]<b[j]?a[i++] : b[j++];
while (i<n) *c++=a[i++];
while (j<m) *c++=b[j++];
}
}
清华没好书
sevecol 2003-08-24
  • 打赏
  • 举报
回复
难道不能正确的运行?
xfr_1982 2003-08-24
  • 打赏
  • 举报
回复
试过了!请讲讲道理可以吗?小弟一定重分答谢!!!
sevecol 2003-08-24
  • 打赏
  • 举报
回复
你试过了没有?
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧