程序=1.数据结构+ 2.算法
1.为什么学习数据结构:
概述:
学习和了解各种数据结构的原理和底层实现能精确的让你了解各个数据结构的优劣势,我们就能在写代码前思考"什么情景下我该用什么数据结构",胡乱选择数据结构会导致代码性能很差。
后面我们将不仅学习每个
数据结构的优劣势,并尝试实现这些数据结构。
2.为什么学习算法:
算法是
实现一个"目的"的解决问题的方案,为了实现一个特定目的,我们在思考之后会提出很多种可选方案.
这种过程映射到现实举例:
目的:抵达北京市.
方案: 1.铁路方案----选用高铁--走路---到达。
2.空路方案----选用飞机--走路--到达。
3.省钱方案----纯走路--------到达。
在这个例子中:
"算法"指的就是整个1、2、3的方案,通过怎样的交通工具的选取和怎样在思考下解决一个问题的具体过程。
"数据结构"就可以类比在方案(算法)实现过程中所使用的几种交通工具,它们各有优劣之处,就好比数据结构,是同理的。
把1,2,3三种方案。
类比成"数据结构"的选用
如: "铁路",这种数据结构,速度适中而价格也适中。
"空路",这种数据结构,速度很快但是价格偏贵。
"步行",这种数据结构,速度很慢但是价格很好。
因此数据结构与算法的学习过程中,实际上我们在逐渐了解各种"数据结构"的知识,如"线性表、链表、堆、栈、树、图"。
数据结构与算法学习的进步过程:
阶段1.了解这些数据结构的各自优劣,各个数据结构的优势劣势,
了解原理后用自己的代码实现它们以加深印象,融汇贯通各个数据结构。
阶段2.不断用数据结构去思考、通过思考解决各个遇到的问题,实现各个目的,
把数据结构带到实际的应用中,对于各数据结构以及使用的逻辑熟练于心。
阶段3.当我们再拿到一个问题或者目的,通过自己独立地思考,
不断用代码修改方案之后,给出一份性能较高的解决方案,
实现并用算法搭配数据结果,解决我们所遇到的问题。
这就是本门课程的知识重要性,
一个好的程序员能思考、并给出好的方案实现各个目的。