我来提供第三个归并排序的优化办法

来源:3-1 归并排序法 - Merge Sort

潇潇雨歇兮我材天生

2020-03-26

经过测试,这种优化方式,当处理的数据越大,优化效果就越明显。
当然看图就知道了,因为减少2Nlong(N)-2次的临时数组内存空间的开辟和撤销操作。
http://img1.sycdn.imooc.com/szimg/5e7ca2b608b3f88b10880816.jpg

写回答

3回答

liuyubobobo

2020-03-27

感谢分享:)


如果我没有理解错,你的方式是整体只开一次临时数组。是的,这是归并排序的一个重要的优化,我在这个课程的补充代码中提供了这个思路的参考代码,可以参考这里:https://github.com/liuyubobobo/Play-with-Algorithms/blob/master/03-Sorting-Advance/Course%20Code%20(C%2B%2B)/Optional-01-MergeSort-Create-aux-Array-Out-of-Merge/MergeSort2.h


继续加油!:)

0
2
潇潇雨歇兮我材天生
非常感谢!
2020-03-28
共2条回复

潇潇雨歇兮我材天生

提问者

2020-03-26

殊途同归,举一反三。

0
0

潇潇雨歇兮我材天生

提问者

2020-03-26

将临时数组作为指针传递即可,对了,如此设计以后,还可以不用再去 索引定位执行-left的操作,看来优化的次数远比我说的还要多的多。

各位同学和老师如何看?虽然这并不能引起数量级的改变,但是减少一半多以上时间是轻易地了。
//img.mukewang.com/szimg/5e7ca3e1083befde08161088.jpg

0
0

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

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

11187 学习 · 1614 问题

查看课程