归并排序也叫合并排序,是将一个数组分为两个或两个以上的有序表。将将两个有序表合并为一个排序表,称为二路排序。
以数组57,68,59,52,54为例
先进行分解
分为[57,68]和[59,52,54]两组
继续分解,分为
[57,68],[59],[52],[54]这几组
开始进行二路合并
[57,68],[52,59],[54]
这是第一次合并
开始第二次合并
[57,68],[52,54,59]
最后合并为一个数组
[52,54,57,59,68]
除了最后一次比较次数比较多,剩余比较次数少多了。
归并排序时间复杂度是O(nlog(2)n),空间复杂度是O(n),因为需要很多空间进行分组