作者haloha1234 (半夜睡不着觉)
看板C_and_CPP
标题[问题] Merge Sort程式Bug找不到(已解决)
时间Fri Dec 16 18:03:05 2016
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VC++
问题(Question):
目前自己在练习DS圣经本第二版的Program 7.9(page 410)
http://imgur.com/a/CJ4wZ
题目如上,要把unsorted的array两两排序
预期的正确结果(Expected Output):
依照我的程式逻辑,输出结果应该会是如下
5,26,1,77,11,61,15,59,19,48
1,5,26,77,11,15,59,61,19,48
1,5,11,15,26,59,61,66,19,48
1,5,11,15,19,26,48,59,61,77
错误结果(Wrong Output):
但我得到的结果反而是如下
5,26,1,77,11,61,15,59,19,48,
1,1,1,77,11,15,15,59,19,48,
1,1,1,11,11,15,15,59,0,0,
1,1,1,11,11,15,15,59,0,0,
程式码(Code):(请善用置底文网页, 记得排版)
http://ideone.com/w4AnNE
补充说明(Supplement):
长度为1的Sublist(S=1)合并所得的结果是正确的
但当S=2进入Merge函数时,iniList的资料会乱掉,
之後就无法得到正确的答案。
看了很久还是不知道iniList乱掉的原因,希望版上大大帮忙
第一次版上发文,格式不对会再修改 谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.137.23.84
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1481882589.A.499.html
1F:→ kiedveian: 39行,iniList 和 tempList 指到同一块空间了 12/16 18:14
2F:→ kiedveian: 你想要的应该是将 tempList 复制至 tempList 吧? 12/16 18:16
3F:→ kiedveian: iniList 12/16 18:17
对,弄错了,应该改成这样,
问题解决了,谢谢您的帮忙
※ 编辑: haloha1234 (114.137.23.84), 12/16/2016 18:25:51
※ 编辑: haloha1234 (114.137.23.84), 12/16/2016 18:42:58