《数据结构与算法之美》专栏学习记录

1.为什么要学习数据结构和算法

【戳链接】指定算法可视化

⼀、数据结构和算法是什么

1、数据结构是指⼀组数据的存储结构

2、算法就是操作数据的⽅法

3、数据结构和算法是相辅相成的,数据结构是为算法服务的,⽽算法要作⽤在特定的数据结构之上

⼆、学习的重点在什么地⽅

数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要⼀个考量效率和资源消耗的⽅法,这就

是复杂度分析⽅法。在学习数据结构和算法的过程中,要学习它的「来历」、「⾃身的特点」、「适合解决的问题」以及「实

际的应⽤场景」。

1、数据结构和算法学习的精髓-复杂度分析

2、最常⽤的、最基础的数据结构:数组、链表、栈、队列、散列表、⼆叉树、堆、跳表、图、Tree

3、最常⽤的算法:递归、排序、⼆分查找、搜索、哈希算法、贪⼼算法、分治算法、回溯算法、动态规划、字符串匹配算法

掌握了数据结构与算法,你看待问题的深度,解决问题的⻆度就会完全不⼀样

  1. 直接好处是能够卸除性能更优的代码。
  2. 算法,是一种解决问题的思路和方法,有机会应用到生活和事业的其他方面。
  3. 长期看来,大脑思考是个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。

如何抓住重点,系统⾼效地学习数据结构与算法

数据结构是为算法服务的,算法要作⽤在特定的数据结构之上。

⽐如,因为数组具有随机访问的特点,常⽤的⼆分查找算法需要⽤数组来存储数据。但如果我们选择链表这种数据结构,⼆分 查找算法就⽆法⼯作了,因为链表并不⽀持随机访问。 数据结构是静态的,它只是组织数据的⼀种⽅式。如果不在它的基础上操作、构建算法,孤⽴存在的数据结构就是没⽤的。

学习的重点在什么地⽅?

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

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

上图中的内容需要找重点学习。以下是20个最常⽤的、最基础数据结构与算法,可以集中精⼒逐⼀攻克这20个知识点。

10个数据结构:数组、链表、栈、队列、散列表、⼆叉树、堆、跳表、图、Tree树;

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

注意:不能死记硬背。要学习它的“来历”“自身的特点”“适合解决的问题”以及“实际的应用场景”。

学习数据结构和算法的过程,是⾮常好的思维训练的过程,所以,千万不要被动地记忆,要多辩证地思考,多问为什么。如果你⼀直这么坚持做,你会发现,等你学完之后,写代码的时候就会不由⾃主地考虑到很多性能⽅⾯的事情,时间复杂度、空间复杂度⾮常⾼的垃圾代码出现的次数就会越来越少。你的编程内功就真正得到了修炼。

⼀些可以让你事半功倍的学习技巧

  • 边学边练,适度刷题

建议每周花2~3小时的时间,自己动手用代码实现几种数据结构和算法。

  • 多问、多思考、多互动

学习最好的方法是,讨论切磋分享。

  • 打怪升级学习法,设定目标

学习过程中,最大的困难便是如何坚持下去。我们在枯燥的学习过程中,可以给⾃⼰设⽴⼀个切实可⾏的⽬标,就像打怪升级⼀样。这样不仅可以学习到知识,还会有意想不到的成就感。成就感继续加强学习动力,这是一种良性循环。

  • 知识需要沉淀,不要想试图⼀下⼦掌握所有

学习知识的过程是反复迭代、不断沉淀的过程。一般而言,学习的过程中一定会遇到“拦路虎”。书读百遍其义自见,遇到困难一定不要放弃。我曾经有许多遇到困难放弃的经历,所以目前基本还是小白一个。

总结:

学习⼀个事物/概念的时候,3W法则。What,Why,How。问⾃⼰三个终极问题--是什么?为什么?怎么样?

  • What 什么是数据结构和算法

数据结构,就是⼀组数据的存储结构。

算法,就是操作数据的⼀组⽅法。

数据结构是为算法服务的,算法要作⽤在特定的数据结构之上。

  • Why 为什么需要数据结构和算法

来谈谈应⽤层⾯的原因。在计算机科学和互联⽹迅猛发展下,需要计算的数据量越来越庞⼤。但是计算机的计算能⼒是有限的,这么⼤量的数据计算,需要越来越多的计算机,需要越来越⻓的计算时间,注重效率的我们需要尽可能的提⾼计算效率。其中重要的⼀项,就是使⽤合适的数据结构和算法。选⽤合适的数据结构和算法,特别是在处理体量⾮常庞⼤的数据的时候,可
以极⼤提⾼计算效率。那么,第三个问题来了,我们怎么选⽤合适的数据结构和算法?有什么衡量标准吗?

  • How 怎么样衡量数据结构和算法

需要引⼊⼀个衡量的标准(metric)---时间复杂度和空间复杂度。

学习数据结构和算法的基⽯,就是要学会`复杂度分析`。知道怎么去分析复杂度,才能作出正确的判断,在特定的场景下选⽤合适的正确的算法。⽽不是盲⽬的死记烂背,机械操作。

10个数据结构: 数组,链表,栈,队列,散列表,⼆叉树,堆,跳表,图,Tree树

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

 

3.复杂度分析

时间、空间复杂度分析方法。

 ⼤O复杂度表示法 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值