1.如何有效学习算法与数据结构?

算法与数据结构并不是要你记忆背诵,而是理解与训练。如果我们想要精通一个领域,我们按照以下三个步骤:

Chunk it up(切碎知识点):把一个大的知识体系切碎成相应的知识点,这一点大部分的书籍都已经帮我们做好了。

Deliberate practicing(刻意练习):这一点是我们需要去下功夫的地方,需要把每一块的知识点拿出来刻意反复练习,比如说游戏中反复练习某一个微操作。

Feedback(反馈):如github和leetcode上面去看别人写的代码,然后与自己的对比,发现优缺点。还有一种是高手给你指点,这一点可遇不可求。

2.如何计算算法的复杂度?

时间复杂度

空间复杂度

符号的表示如下所示:

算法与数据结构(一)-导学

一、下面代码的意思是n=1000,输出n本身。这里只需要做一次运算,我们把它叫做O(1)。

算法与数据结构(一)-导学

二、下面这段代码也是O(1)的时间复杂度。

算法与数据结构(一)-导学

三、下面这段代码循环n次输出,并且只会循环n次。我们把这种复杂度叫做O(n)。

算法与数据结构(一)-导学

四、下面这个程序写了两个嵌套的循环。外层是i从1到n;内层是j从1到n。随着n的增大,它的工作量是n平方地增长。

算法与数据结构(一)-导学

五、下面这个程序,i从1到n,但是i的增加是每次乘2,在意的是计算这个循环能计算多少次。所以时间复杂度是O(log(n))

算法与数据结构(一)-导学

六、下面这个程序,i从1到2的n次方,算法的复杂度就是O(K^n)。

算法与数据结构(一)-导学

七、下面这个程序,i从1到n的阶乘进行循环,算法复杂度就是O(n!)

算法与数据结构(一)-导学

总括来说就是对于任何的输入n,你的程序要跑多少次,就是他的时间复杂度

维基百科对算法的分析:

https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)

算法与数据结构(一)-导学

算法与数据结构(一)-导学

 

相关文章:

  • 2021-07-20
  • 2021-05-21
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-30
  • 2021-09-19
  • 2021-08-31
  • 2021-11-09
  • 2021-12-15
  • 2021-12-27
相关资源
相似解决方案