大数据、Java EE 学习资料请关注 B 站:https://space.bilibili.com/204792350

数据结构与算法 - 介绍

什么是数据结构?

数据对象在计算机中的 存储和组织方式,但是它存在有两种概念,一种是关于数据对象的逻辑结构,另一种则是数据的物理存储结构

其中,逻辑结构是指对数据的组织方式,例如线性结构,这种结构是连续性的,像1,2,3...;而物理存储结构则是对逻辑结构在计算机中的具体存储方式,是使用数组,还是链表。

数据对象必定与一系列加载其上的操作相关联,完成这些操作所用的方法就是算法

简单的说,就是对数据执行的操作,例如是插入,还是修改或者删除,而完成这些操作的方法就是算法

抽象数据类型

可以通过抽象来描述数据对象及其相关的操作,其中有两个关键词,一个是抽象,一个是数据类型。 什么意思呢?数据类型包含两个东西,一个是数据对象集,也就是具体数据,另一个呢,则是对数据对象相关联的操作集,包含对数据的操作方式。

而抽象的意思则是描述数据类型的方法不依赖于具体实现。也就是描述对数据可以有什么操作,但是不涉及具体如何实现。这样的好处是对程序建立宏观思维,从而可以对程序有更详细的了解。 抽象与存放数据的物理结构、机器、实现操作的算法和编程语言都无关,只是描述数据对象集和相关的操作是什么。

什么是算法?

算法是一个有限指令集,在有限的步骤之后会终止执行,可以接受输入(有些情况不需要接受输入),但是最终至少会产生一个输出。

描述算法的每一条指令必须有充分的目标,目标在计算机能处理的范围之内,并且描述是抽象的,不依赖任何一种计算语言和具体实现手段

两者的关系

简单的说,数据结构与算法相辅相成,数据结构是为了算法服务,算法要作用在特定的数据结构上,因此无法孤立彼此

总结一下:

  1. 解决问题方法的效率,是跟数据的组织方式直接相关的
  2. 解决问题方法的效率,跟空间的利用效率有关
  3. 解决问题的方法的效率,跟算法的巧妙程度有关

为什么要学数据结构和算法?

数据结构和算法是基础的知识,可能在实际工作中用不到

但是,万丈高楼平地起,所有软件都是从基础搭建起来。例如现在的各种开源框架,比较主流的 Laravel,这些框架之所以会成为主流,那是因为揉合了很多的基础数据结构和算法的设计思想,而它的性能往往不用我们去考虑,我们只需要基于它来编写我们的业务即可。

学习任何知识都是为了“用”,是为了解决实际工作问题

所以学习数据结构和算法,除了可以提高技术水平,还有利于提升大脑的逻辑思维,以及评估代码的性能和资源消耗,还能增加解决问题的手段。

掌握数据结构和算法,不管对于阅读框架源代码,还是理解背后的设计思想,都是非常有用的

所以总的来说,有几点:

  1. 建立时间/空间复杂度的意识,写高性能的代码
  2. 训练逻辑思维
  3. 提高代码质量,能够设计基础结构
  4. 提高编程水平
  5. 获得更好的工作回报

掌握了数据结构和算法,看待问题看本质,解决问题的角度 360 度无死角,选择更合适的方案

如何学习?

通过上面文字简单的介绍了数据结构和算法是什么,有什么用,可以从中得知数据结构和算法如何更高效存储和处理数据的问题,这是具体的解决方法。因此,还需要一种可以考量效率和资源消耗的方法,那就是:复杂度分析

学习数据结构和算法的前提条件就是掌握复杂度分析,代码好不好,分析一下就知道,怎么优化,分析一下用什么算法

所以可以归类为:

  1. 掌握复杂度分析
  2. 掌握基础的数据机构和算法,再学习复杂
    • 基础的数据结构:数组链表队列散列表二叉树跳表Trie 树
    • 基础的算法:递归排序二分查找搜索哈希算法贪心算法分治算法回溯算法动态规划字符串匹配算法
  3. 多辩证,多思考,多问问为什么

不死记硬背,不为学习而学习,要学习它的“来历” “自身特点” “适合解决的问题” 及 “实际的应用场景”

学习技巧

  1. 边学边练,适度刷题
    • 每周花 “1~2”小时
    • 可以“适度”刷题,但一定不要浪费太多时间在刷题上
    • 学习的目的还是掌握,然后应用
  2. 多问、多思考、多互动
  3. 打怪升级法
    • 给自己设立一个切实可行的目标
  4. 沉淀知识,停下来梳理下知识
    • 适当停下脚步,整理下学习内容,梳理清晰,才进入下一步

步入正文

在掌握了复杂度分析这个重要手段之后,就可以进入数据结构和算法的正文中了

诺,有这么多内容:

数据结构与算法

开始我们的算法之路吧

相关工具

评论

公众号:mumuser

企鹅群:932154986

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×