如何有的放矢的学习数据结构与算法

**

如何有的放矢的学习数据结构与算法

大家是否和我一样,因为看不懂数据结构与算法而怀疑自己太笨?说句实话,俺大一时抱着一本《数据结构与算法:C语言版》也是如此。大多数人第一次接触到数据结构与算法的时候,都会有这种感觉,感觉这知识不讲武德,这知识不进脑子。

在阅读了一些资料和专栏后,我突然发现是我没有找到好的学习方法,没有找到数据结构与算法学习的重点所在

在大学的教科书中,大多数概念都很抽象,很晦涩难懂。对理解实际并没有很大的帮助,反而有可能让你走进一些误区,学习数据结构与算法最重要的是结合实际,结合应用场景的需求做应用。

简单的来讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一些方法。数据结构是为算法服务的,算法要作用在特定的数据结构之上。 如果把数据结构与算法两者分开来讲显然是不负责任的,数据结构和算法是紧密相关的,不同的应用场景对应着不同的数据结构和处理方法。

比如说,数据具有随机访问的特点,我们常用的二分查找算法需要利用数组来存储数据,但假如我们使用链表这种链式存储的数据结构,二分查找就无法工作了,因为链表不支持随机访问。

数据结构是静态的,它只是组织数据的一种方式。如果没有对他进行针对性的算法构建,仅仅一个孤立的数据结构是没有用的。

数据结构与算法这门功课学习的重点在哪呢?

数据结构与算法的种类特别多,光看目录便很头疼。我在此先总体性的归纳一遍。

要想学好数据结构与算法,首先要掌握的便是数据结构与算法中最重要的部分----复杂度分析。 我毫不夸张的说,复杂度分析几乎占据着数据结构与算法这门课大半的内容,是数据结构与算法学习的精髓所在。

其实,数据结构与算法存在的意义就是为了更省更快地处理和存储数据的问题,因此就引出了复杂度分析这一概念,这一概念帮助着我们考量效率和资源消耗。如果你仅仅只掌握了数据结构与算法的特点用法,但却没有学好理解好复杂度分析,那就相当于只知道操作口诀,而没有掌握核心要领(复杂度分析),只有吧核心要领了然于胸,才能做到无招胜有招。

复杂度分析这个知识点我会话大部分的篇幅给大家讲,这一方面的内容一定要花功夫攻克下来,用的非常熟练。否则,后面的数据结构和算法也很难学的透彻
在这里插入图片描述在这里插入图片描述

不要看着这些内容很多很复杂而害怕,其实作为一个初学者,我们并不需要把这里的内容都拿下,很多高级的数据结构与算法,比如二分图,最大流等,我们其实在基本用不上。

其实我们只需要掌握最常用,最基础的数据结构与算法已经够用了。

这9个数据结构:数组,链表,栈,队列,散列表(也称哈希表),二叉树,堆,跳表,图。

9个算法:递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,回溯算法,动态规划,字符串匹配算法。

掌握了这些数据结构与算法后,在学习一些更加难更加复杂的数据结构与算法,就会变得非常简单,学习起来非常快了。

我再次强调在学习数据结构与算法的过程中,不要总是死记硬背,也不要为了学习而学习,要在学习数据结构与算法的过程中思考其能够使用的应用场景,能够解决什么样的问题,还有其自身的算法特点,其复杂度是多少。

学习数据结构与算法的过程,也是对思维锻炼的一个过程,所以,千万不要被动式地记忆,要多辩证地思考,多想想这种数据结构为什么要这样设计,这样设计的优缺点是什么。这样去学习数据结构与算法,会牢固很多。

在学习的过程中,一定会遇到拦路虎。如果哪个知识没学明白,不要害怕,其实这种情况非常正常的。因为想听一遍,看一遍就把所有知识都学会,都牢牢的掌握,这是不切实际的。学习知识是需要反复迭代,不断沉淀的。

**

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页