文章目录
一、对算法的思考:
- 算法为什么老和 数据结构 混在一起?
相辅相成、唇齿的关系。好的算法依赖巧妙的数据结构。数据的物理、逻辑结构又限制了算法。 - 算法包含哪些东西?难道就是排序吗?
搜索、排序、插入、删除、更新等。 - 数据结构有哪些?
线性数据结构(数组、堆栈、列队)、树、图等
二、算法学习的效果:
1、在最复杂的逻辑思维、纯抽象思维中来锻炼锻炼逻辑能力。
2、让人变的细心。锻炼出缜密的思维逻辑,告别凭感觉、大概、简单的思维。
三、效果体现、拓展:
1、逻辑是什么?
初级阶段: 面对一个问题、算法、目的。能清晰的划分出业务关系、逻辑关系、。且不能忽略各种边界值。
升级阶段: 能用最合适的数据结构。最快、最简洁、最优秀的算法 ,最高效的编程函数。最周全的边界值。最好的设计模式模式。
再升级: 能预料到可能遇到的所有情况。
都是抽象的,但却需要周全、清晰的划分关系,全凭脑子抽象出完整的闭环 + 经验来实现。
先制造一个闭环,例如:整数包含正数、负数、零。不能只考虑大于1的数、而忽略1、 0、 负数等。
2、数学是什么?
越来越觉得,数学就是抽象的现实、问题、思维、几何、编程等现实的最高级的抽象模型。
就像人体的细胞、物质的分子、生物的基因一样。万变不离其宗。
四、现实问题、编程、算法、数学的关系:
1、编程笼统的说是解决现实问题的。细致的说就是用数据结构和算法解决现实问题。
2、数学是算法的具体、科学的抽象。小到临界值、细节,大到无限大。
3、数学与数据结构、代码架构设计都是一一对应的。
4、自己的文章:用纵向思维理解编程与数学的关系。培养数学性格
五、好看、直观 vs 繁琐、抽象对比:
数学是复杂、繁琐、抽象的科学。符合计算机的特性。对应的优点:快速、范围可以无限大。缺点:要严密、抽象、不断优化、烧脑的设计出通用的程序。概述:一劳永逸、不辞劳苦。
直观、好看的东西比如图片、视频、艺术设计等。符合人脑的思维。对应的优点:容易、简单、理解快。缺点:稍微大一点、复杂一点脑子就承受不了了。概述:直观易理解,但人脑有限。
印证了一个定律: 世界万事万物都是平衡的。没有绝对的优劣好坏。不要偏激,要开阔思维。
21实际是科技、抽象思维的世界
六、一些心得:
1、概念理解的时候觉得不知道啥意思、繁琐、简单的事情复杂化,用的时候就知道概念是前人的经验、是为了避免复杂重复的定义概念,冗余的代码-没有这个概念你就要用复杂冗余的旧概念思维
来源:看视频的时候觉得概念没什么用,又复杂、简陋、繁琐。自己设计代码、研究、使用二叉树的时候,才发现掌握了那几点就好搞多了。
重点: 数学公式是为了方便你,不是为难你。你不是一直在找别人的肩膀吗?????
2、学校要的是培养基础(老是讲些概念,枯燥繁琐),培训机构目的是快速出效果。
老了才知道,学校风格的教育就像沉稳、内涵的老头,培训机构就像轻浮的小妹。
哪里来的想法:数据库系统概论(王珊老师)
后来才知道,基础是多么的重要。