归并排序
来源:互联网 发布:汽车图解软件哪个好 编辑:程序博客网 时间:2024/05/05 10:13
归并排序基本思想:
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。
对于一个无序序列来说(通常为一个数组),为得到有序子序列,通常将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。若将两个有序表合并成一个有序表,称为二路归并。
综上可知:
归并排序其实要做两件事:
(1)“分解”——将序列每次折半划分。
(2)“合并”——将划分后的序列段两两合并后排序
由以上图解可知,子表个数为奇数,则最后一个子表无须和其他子表归并(即本趟处理轮空):若子表个数为偶数,则要注意到最后一对子表中后一个子表区间的上限为n-1。
图解图片来自http://blog.csdn.net/collonn/article/details/17581953
另外参考:
http://www.cnblogs.com/jingmoxukong/p/4308823.html
代码如下:
http://download.csdn.net/detail/mochounv/9691113
代码中的MergeSort(T[] source)。
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- android视频播放MediaPlayer+SurfaceView
- 向后台发送请求
- C语言疑问
- 世界第一数学强校的背后
- 【Netty源码分析】Reactor线程模型
- 归并排序
- 公式编辑器编辑带圈数字序号的方法
- 阿来最帅
- Mybatis中传参报There is no getter for property named 'XXX' in 'class java.lang.String'
- JsonCpp操作数组对象
- 杂谈: 项目安全与js标准问题
- Linux内核的Makefile和kconfig解读,如何在内核中添加自己的代码
- android:clipToPadding和android:clipChildren的正确使用方法
- window下eclipse下部署hadoop2.7.2可阅读源码