MergeSort测试时,使用了n=1000000这种大规模数据,程序就出现错误并退出

来源:3-3 归并排序法的优化

2333333hhhh

2017-01-19

我在用MergeSort测试时,使用了规模n=1000000这种大规模。运行时插入排序还可以运行,但运行到归并排序的时候程序就出现错误并退出,请问为什么呢

写回答

4回答

liuyubobobo

2017-01-20

耐心调试一下,看看你的程序是不是有什么错误。可以先运行一下课程的官方代码,看看是否ok?


https://github.com/liuyubobobo/Play-with-Algorithms/blob/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/03-Merge-Sort-Advance/MergeSort.h


再和课程的官方代码比对一下,看看有没有什么逻辑问题? 

0
1
2333333hhhh
蟹蟹
2017-01-21
共1条回复

一束会飞的光

2017-02-17

T aux[r-l+1]; 改为  T* aux = new T[r - l + 1];   注意退出函数时应delete

0
0

2333333hhhh

提问者

2017-01-21

已经知道错哪儿了。原来是在代码中把1和l弄混了。不好意思,老师

0
0

2333333hhhh

提问者

2017-01-21

运行老师的代码依然在mergeSort的时候报错退出。其他排序都没错。n=100000时也不报错,n=500000就不行了。蒙圈了已经

0
1
三爷JaVaja
有种可能是整型溢出,因为mid=(l+r)/2 l+r可能会很大;所以mergeSort虽然没报错,但是也不会运行出结果
2017-07-24
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程