是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。(from zh.wikipedia.org)
我对归并排序的理解是——分而治之,就是一个问题看起来很复杂,那就将他分开处理,这也是递归的思想; 就拿排序这件事件来说,对一个数组的排序,我们可以将他分成两个数组来处理,再对这两个数组同样的道理来处理,将他们分别分成两个数组来处理…… 直到数组无法再细分下去(即数组的长度为1,只有一个元素的数组肯定是有序的),分为之后的数组进行合并操作,向上整合整个数组,最后到达得到一个有序的数组的目的。
看着图的同时再来看一看具体的代码实现过程:
程序输出:
1 2 6 7 8 9 18 33
【图解算法】排序算法——冒泡排序、选择排序
【图解算法】排序算法——插入排序
【图解算法】排序算法——归并排序
【图解算法】排序算法——快速排序
【图解算法】Java GC算法
【图解算法】排序算法——堆排序
【图解算法】并查集 —— 联合查找算法
【图解算法】排序算法——计数排序