关于归并排序的算法优化策略

来源:互联网 发布:手机上怎么开通淘宝 编辑:程序博客网 时间:2024/05/29 09:24

归并排序,从伪代码分析,在不使用堆排序的基础上可以说是最速度最快的算法
但是其缺点也很明显,频繁的复制数据,在利用动态分配内存时,在合并时频繁的复制数据,还有在小数据的排序时,不如插入排序等,由于随机化快速排序,在实际应用中,归并排序的速率很难超过快速排序

 

对此提出一些改进方法

1.针对频繁复制数据,对于A,B两个数组,可以选择当奇数次合并时,从A复制到B,然后偶数次时从B复制到A,而不用每次从A到B再从B到A,采用更换源数组于目标数据的方法,减少一半的复制次数。优化算法
2.针对动态内存分配的时候,采用lazy分配模式。一次分配所有的空间,而不采用动态分配能提高内存分配速率(http://blog.kingsamchen.com/archives/668)

3.利用插入排序优化归并排序的小数据的排序,归并排序分割到比较小的组时。对较小的组采用插入排序后,再进行合并,合并的较大的组,采用原始的归并排序(http://fangxia722.blog.163.com/blog/static/317290122009112831244671/)