分治法类似于二叉树法,将一个大问题,分成两个小问题解决。由于子问题与母问题有相同的属性,也就是一类问题,分步解决问题。这里用归并排序举例。
如果不用分治法,a1与a2到an每个数比较,进行n-1次,a2进行n-2次,总次数为(n-1+1)*(n-1)=n^2-n一般排序为O(n^2),时间复杂度较高。
采用分治法,使子对象的元素个数为母对象的二分之一,问题变成了两个。然后,再次进行分治,共计分治log2(n),也就是共计大步骤次数为log2(n),每步共计比较n/2次。总次数log2(n)*n/2,时间复杂度为O(logn*n)。
分治法,是将大数据分成小数据,按步骤求出最优解。小数据处理便每个子问题为n*n/4次运算,增加两倍子问题,从而计算量减少n*n/2次,由此反复,总计算量为n*log2(n)。