以下为我听网课视频的笔记:
网课视频:麻省理工学院公开课:算法导论 (B站上一搜就可以找到)
个人学习资料:算法导论第3版
主要内容:本文主要记录对分治法的理解及应用,并对课堂上的内容整理的笔记。
-
总述:分治法的主要步骤是:分(divide)——治(conque)——合(combine),通过将大(难)的问题分解成小(容易解决)的问题,然后对小问题进行求解,最后再合成从而解决问题。
-
归并排序:对一个未排序的数组进行排序,该算法在另一篇博文(排序算法——合并算法)已有所介绍
算法复杂度:时间复杂度: T ( n ) = 2 T ( n 2 ) + Θ ( n ) T(n) = 2T(\dfrac{n}{2}) + \Theta(n) T(n)=2T(2n)+Θ(n),计算得到: T ( n ) = Θ ( n l o g n ) T(n) =\Theta(nlog\ n) T(n)=Θ(nlog n)- 分:将一个待排序的数组分成两个小的数组
- 治:对得到的两个数组分别进行排序
- 合:将排好序的两个小数组合并起来
-
二分查找算法:在一个已排好序的数组(从小到大排序)中查找某个数字x
算法复杂度:时间复杂度: T ( n ) = Θ ( l o g 2 n ) T(n) =\Theta(log_2\ n) T(n)=Θ(log2 n)
- 分:选取数组中间的数字与x进行比较(分为两个子问题了)
- 治:若小于x,则选取右半边数组;若大于x,则选取左半边数组
- 合:不需要这一步.
- 乘方问题:计算某个自然数的乘方,即 x n x^n x<

本文介绍了分治法的基本思想,包括分、治、合三个步骤,并通过归并排序、二分查找算法、乘方问题以及斐波那契数列的计算来阐述分治法的实际应用。归并排序的时间复杂度为Θ(nlog n),二分查找的时间复杂度为Θ(log2 n)。分治法能有效降低问题复杂度,如在计算乘方问题时,时间复杂度可降至Θ(log n)。
533

被折叠的 条评论
为什么被折叠?



