算法渐进关系
发布时间: 2023-06-15 06:08:14
① 怎么循序渐进的学习算法算法对于程序员有什么作用
首先,对于大部分程序员而言,在工作中不是必须的,但是你要找工作,特别是刚毕业参加校招的学生,想进入一些比较大的公司(BAT之流),是必须要学好算法的。
此外,在提高自我技术水平的过程中,比如去阅读一些优秀的代码的时候,也是需要算法功底的,就像去看leveldb、redis源码的时候,起码得知道跳表是个啥吧,看Linux内核文件系统的代码得知道红黑树是个啥吧。
再就是有一个很重要的影响:算法学的好的话,不论对你思考问题的方式还是对你编程的思维都会有很大的好处。
另外关于刷题的网站还是首推Leetcode。
如果有一些算法基础的话,推荐Codeforces。
至于资料书籍的话,其实没有太多要求,网上的资料很多,随便谷歌一下就能找到很多详细的资料。
算法导论的话不推荐,不推荐初学者看。这本书是本神书,但是这本书的门槛比较高,需要有一定数学基础和算法基础的人去研究,如果你没有一定的基础或者对算法狂热的学习兴趣,你很难啃下去。
改了一下知识列表的结构,分了下类,可能更加清楚一点。这里面基础是我觉得必须应该掌握的,中等的是有如有余力最好学习的,高级的可以了解,可以了解一下,对于个别感兴趣的可以深入学习一下。
② 进行算法的复杂度分析以及渐进效率分析
(1) C=105和N0=1 是什么意思
这里只是给出例子, 说明C 和n0不是固定的, 但只要找到一组确定的C, n0, 就表示符合O(g(n))
(2) C2g(n)=<t(n)=<C1g(n)
这里也是类似,
考虑n(n-1)/2<=n^2/2时, 可取c1=1/2, n0=0
考虑n(n-1)/ >= n^2/4时,可取c2=1/4, n0=2
最终取n0=2即可满足上限和下限要求。
热点内容