如何学习数据结构和算法

首先掌握常用的、基础的。然后在此基础上往进行扩展学习。

常用的、基础的数据结构和算法有20个。

数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie

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

这些需要一一攻克。

 

多思考,多想。往往需要灵魂三问,是什么?有什么用?怎么用?用来解决哪些实际问题?

当然了,你也可以思考一下为啥要学习这门课程?

 

什么是数据结构?什么是算法?

广义:数据结构就是一组存储结构。算法就是操作数据的一组方法

狭义:数据结构和算法,是指某些特殊的数据结构和算法,比如:队列、栈、堆、二分查找、动态规划等。这些都是前人的智慧结晶,我们可以直接拿来用的。这些经典的数据结构和算法,都是前人从很多实际操作场景中抽象出来的,经过非常多的求证和检验,可以高效的帮助我们解决很多实际的开发问题

 

这个问题非常经典,还是第一次看到这个问题。

数据结构和算法有什么关系,为什么大部分书籍都把这两个东西放到一块来讲呢?

数据结构和算法是相辅相成的,数据结构是为算法服务的,算法需要作用在特定的数据结构上。因此,无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构

例如:数组具有随机访问的特点,常用的二分查找算法需要数组来存储数据。如果选择链表这种数据结构,二分查找法就无法工作了,因为链表并不支持算计访问

 

学习数据常用的、基础的数据结构只用有高中数学水平即可。

 

学习的重点在什么地方?

数据结构和算法,很多人都很头疼,我也一样,里面的东西太多了,又不知道从何处下手学习,往往事倍公半。首先需要梳理一下有哪些知识点,应该先学什么,后学什么,在对照你属于哪一个阶段,针对性的进行学习

 

想要学好数据结构和算法,首先要掌握一个数据结构与算法中最重要的一个概念 -- 复杂度分析。

这个概念有多重要呢?可以这么说,它几乎占了数据结构和算法的半壁江山,是数据结构和算法的精髓。

 

数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。所以你只有掌握了数据结构和算法的特点,用法,但是没有学会复杂度分析方法,那就相当于只知道操作口诀,而没有掌握心法。只有心法了然于心,才能无招胜有招。

 

数据结构和算法涵盖的知识点:

如何学习数据结构和算法_第1张图片

 

 

在学习的过程当中,不要死记硬背,不要为了学习而学习,而是要学习它的“来历”、“自身的特点”、“适合解决哪些问题”以及“实际应用场景”。

 

一些学习技巧:

1、边学边练,适度刷题

可以适度刷题,但不要花费太多时间,学习的目的还是掌握,然后应用

2、多问、多思考、多互动

3、打怪升级法

设立一个切实可行的目标,不断的点亮你的技能点。不可能一口吃个胖子

4、知识需要沉淀,不要试图一下子掌握所有

学习是一个反复迭代的过程,不断沉积的过程

 

摘自:数据结构与算法之美  -- 王争

你可能感兴趣的:(数据结构和算法)