数据结构:前言

前言

Example 1 修复照片

原理:拿周边相近的部分来补充

关键技术

  1. 数据结构 分成小块,“搜索”统计特性相同的小块

  2. 信号处理 小块的边界处理

Example 2 水的模拟

原理:

  • 用很多的小球代替液体,每个小球都遵循牛顿力学体系,用单个粒子的物理运动来模拟水的非线性运动。
  • 粒子多,效果好,运算量大;粒子少,效果差,运算量小。

那么如何在性能和效率上达到平衡呢?(时间、空间复杂度

外围红色小球用小直径,内围蓝色小球用大直径。

Example 3 人工智能

AlphaGo & 区块链

原理: 区(结点)+链表+hash+分布式

启示

  1. 从生活和实际需求产生——观察
  2. 抽象出模型——数学模型——才能解决它
  3. 程序模拟——与其他方法的比较

实际问题—模型—模型的性质—解决方案—评估—提出新的问题—实际应用

  • 抽象——逻辑工具、逻辑能力
  • 还原——具体实施、编程能力

如何增强实践能力?

  1. 自己多动手编程实现已有算法
  2. 编程实现自己的算法,可以考虑作业题

启示

计算机思维:

​ 是一个解决问题的流程,包括一系列的特征和处理方式、方法和流程。

  • 理工科思维
    • 数据、量化、逻辑性
  • 计算机思维
    • 更强调逻辑性

例题

​ 100桶酒,其中一桶被混毒,有若干志愿者试验,试到毒便死。求以最短的时间内找到毒酒所在那桶,问至少要多少名志愿者?给出你的方案。

​ 解:由题意得,共有100桶酒,七位志愿者,可列下表以直观展现过程。

  1. 首先将100桶酒利用二进制进行编号,则需要七位数( 100 < 2 7 = 128 100<2^7=128 100<27=128)。如第1桶为0000001,第100桶为1100100。

  2. 列出如下表格

  3. 采用这样的方法:

    ​ 让每个志愿者都试自己所在列的位数为1的酒,例如一号志愿者要喝掉第100号酒。

  4. 假如,6号志愿者出现反应,便排除了第六列位数为0的酒,再根据其他志愿者的反应,就可以确定到底是哪一桶酒。

本质上是“计算”。

计算机里为什么要采用二进制?

二进制将计算转化为逻辑判断

数据结构的学习的目的?

培养计算机思维

​ 培养如何用计算机解决实际的问题,学会思考问题的方法以及如何将此问题转化为计算机可解的问题。

数据结构提升本科生的能力?
  1. 具有批判性和系统性推理的能力
  2. 具有形成概念和解决问题的能力
  3. 具有判断什么意味着彻底理解某种东西的能力
  • 具有独立思考的能力
  • 具有辨别重要与琐碎,持久与短暂的东西的能力
下面对于数据结构的学习的几个问题看看你是否能回答上来?
  1. 课程的目标是什么?

    ​ 解决什么问题

  2. 解决问题的方法是什么?

    ​ 是系统的方法还是一门技术

  3. 有什么实际应用?

    ​ 如何应用这些理论和方法解决其他的问题,见前面的例子。

对于这三个问题必须能清晰的回答出来,才可以说你的数据结构课程的理解到位。而不是课程考了多少分。

那如何学习数据结构呢?
  1. 多动脑

    ​ —深入理解问题的本质,抽象出模型

  2. 多动笔

    ​ —纸上推演,深刻领会

  3. 多动手

    ​ —上机编程实践

    深入思考比勤奋更重要!

前言部分就结束了。如果你觉得很简单,那我羡慕你,如果你觉得难,那我想说很正常,数据结构不是单纯的一门技术(如果是的话,可能早过时了)。它作为一门系统的方法论,像哲学一样,一步步的带我们领悟计算机思维,把现实问题抽象为计算机问题,寻求最高效率的求解,这是一件有难度且也有魅力的事情。那接下来的课程,请随我一同探索吧~~ ^_^

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务