算法学习(Algorithm Learning)
算法学习(Algorithm Learning)
wuan算法学习(Algorithm learning)
资料:https://www.hello-algo.com/(Hello算法)
https://github.com/d2l-ai/d2l-zh(《动手学深度学习》)
1.初识算法
1.1明确下算法和数据结构的关系:
- 数据结构是算法的基石。数据结构为算法提供了结构化存储的数据,以及操作数据的方法。
- 算法为数据结构注入生命力。数据结构本身仅存储数据信息,结合算法才能解决特定问题。
- 算法通常可以基于不同的数据结构实现,但执行效率可能相差很大,选择合适的数据结构是关键。
(之前有个误区 算法和数据结构是一个东西 其实两者是相辅相成的
1.2算法误区:
Q:作为一名程序员,我在日常工作中从未用算法解决过问题,常用算法都被编程语言封装好了,直接用就可以了;这是否意味着我们工作中的问题还没有到达需要算法的程度?
A:我认为学算法(以及其他基础科目)的意义不是在于在工作钟从零实现它,而是基于学到的知识,在解决问题时都能作出专业的反应和判断,从而提升工作的整体质量。
在工程领域,大量的问题是难以达到最优解的,许多问题只是被”差不多“解决了。问题的难度一方面取决于问题本身的性质,另一方面也取决于观测问题的人的知识储备。
人的知识越完备、经验越多,分析问题就会越深入,问题就能被解决得更优雅。
2.复杂度分析
2.1算法效率评估
- 找到问题解法:算法需要在规定的输入范围内可靠地求得问题的正确解。
- 寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。
3.知识学习
3.1数据结构
链表:
单链表:邻接表–存储图
–树
双链表:优化某些问题
链表其实就是一长串结点拼接而成的一个链
每一个结点有一个e[N],ne[N],也就是本结点的值和指向下一个结点的指针.
需要注意的是head指向空结点
e[0]=3,ne[0]=1
e[1]=5,ne[1]=2





![[object Object]](https://img.090227.xyz/file/ae62475a131f3734a201c.png)