数据结构与算法学习总结开篇

本专栏是学习王争老师的《数据结构与算法之美》,详细内容可以去学习王争老师的专栏,希望大家都能够有所收获。

本篇展望接下来学习数据结构与算法的看法,帮助自己能够坚持学习下去,然后有所收获。学习技术贵在坚持不懈,运用好的学习方法,抓住重点,以达到高效学习。

一、什么是数据结构与算法?

广义上, 数据结构指一组数据的存储结构算法就是操作数据的一组方法

例如,图书馆存放书籍,为了方便查找需要的书籍,图书管理员一般会将书籍分门别类进行存储。按照一定规律编号,就是书籍这种“数据”的存储结构。

当需要查找一本书时,可以有许多的方法,例如可以一本一本地找,也可以先根据书籍类别的编号,是人文,还是科学、计算机,来定位书架,然后再依次查找。笼统地说,这些查找的方法都是算法。

狭义上,指的是某些著名的数据结构与算法,比如队列、栈、堆、二分查找、动态规划等。

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

数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。

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

二、学习数据结构的重点

1、复杂度分析

学习数据结构与算法,首先要掌握一个数据结构与算法中最重要的概念——复杂度分析。复杂度分析是数据结构与算法学习的精髓。

数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。

所以,如果想要运用好数据结构和算法,不单单需要掌握数据结构和算法的特点、用法,还需要将复杂度分析这门心法了然于胸,才能够更好的去运用数据结构与算法。

2、数据结构与算法的全面知识

以下是来自《数据结构与算法之美》中一张几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点的知识图。
来自《数据结构与算法之美》
最常用、最基础的20个数据结构与算法:

  • 数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树
  • 算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法;

三、如何去学习数据结构与算法?

1、结合实际去学习与运用

在学习数据结构和算法的过程中,不要只是死记硬背,不要为了学习而学习,而是要学习它的“来历”“自身的特点”“适合解决的问题”以及“实际的应用场景”

学习数据结构和算法的过程,是非常好的思维训练的过程,所以,千万不要被动地记忆,要多辩证地思考,多问为什么

2、边学边练,适度刷题

每周花 1~2 个小时的时间,集中把本周学习的数据结构和算法,全都自己写出来,用代码实现一遍。

3、多问、多思考、多互动

学习最好的方法是,找到几个人一起学习,一块儿讨论切磋,有问题及时寻求帮助答疑。

4、在学习过程中,不断为自己设立目标

在枯燥的学习过程中,也可以给自己设立一个切实可行的目标,就像打怪升级一样。

针对数据结构与算法的学习,可以在学习每一栏结束之后的思考题进行认真思考,尝试去思考和解决问题。或者输出一篇学习笔记或者学习心得等方法。

5、沉淀知识

人非圣贤,学习知识的过程是反复迭代、不断沉淀的过程。听一遍,看一遍就掌握所以的知识,这是不太可能的。只有长期反复的学习,才能正在去掌握。

四、学习flag

  • 每一篇文章,输出一篇学习笔记;
  • 对于每一个数据结构与算法,先使用Java、后续使用Golang分别实现一次,并将实现的代码丢到GitHub中;
  • 坚持学习,持续学习,运用学习到的知识在leetcode进行适当练习;
  • 结合日常工作,看能否运用上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值