归并排序在理念上采用分治策略:
1 将原问题分解为若干子问题
2 解决这些子问题,递归的求解各子问题,若规模足够小,则直接求解
3合并这些子问题成原问题的解
归并算法有两大核心问题需要搞清楚
1 归并算法是如何排序的
1 将数组分成两个有序数组,数组再不断分成两个小数组
直到分成一个元素,再两两排序,最后merge
2 数组分成两个小数组的时候采用了递归的概念
归并排序的时间复杂度:
T(N)=2T(N/2)+N
= 4T(N/4)+2N
= 8T(N/8)+3N
由此类推:
层数为2的h次方为n
h=lgN
T(n)= ct(1) +n*logn