以下为我听网课视频的笔记:
网课视频:麻省理工学院公开课:算法导论 (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