关于分治法的时间复杂度

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yizhangbiao/article/details/44746889

    分治法类似于二叉树法,将一个大问题,分成两个小问题解决。由于子问题与母问题有相同的属性,也就是一类问题,分步解决问题。这里用归并排序举例。

    如果不用分治法,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)。

展开阅读全文

没有更多推荐了,返回首页