1 归并排序
归并排序是一种分治算法,把大的问题分成一个个小部分去处理,最终解决大问题。
假设有两个数组A,B,每个数组都是从小到大排好序的,如果要将这两个数组合并成一个数组,并且从小到大排好序
那么只需要从头比较,依次将A,B中较小的值放入新的数组。
对于一个无序的数组,也可以通过这种方法排序,将数组从中间分成2部分,但是大概率是两个无序数组,然后接着对
分开的两部分再分,直到每部分都是只有一个数,显然每部分都是有序的了。如下图:
一.先分
二.比较排序再和
然后对最下一层两两比较,例如80 30 得到新的序列 [30,80] 60 20 得到新的序列[20,60]
然后在对新序列[30,80]和[20,60]进行合并, 从头比较得到新的序列[20,30,60,80] 同理可得 右边的序列[10,50,60,70]
最后对[20,30,60,80] 和 [10,50,60,70] 进行合并,先创建一个新数组,长度等于两个数组长度的和,然后开始比较:
10比20小,先将10存入; 将20和50比较,20小,将20存入;将50和30比较,30小,将30存入;50和60比较,50小,