这个公式展示了程序的本质
凭借一句话获得图灵奖的Pascal语言之父——Nicklaus Wirth,让他获得图灵奖的这句话就是他提出的著名公式
这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的E=mc^2
-
算法其实就是用于解决某一类问题的公式与思想(给出问题的数学模型)。
-
而数据结构就是数据的组织、管理和存储格式,其使用目的是为了高效的访问和修改数据。
-
至于程序就是计算机处理问题的一系列指令。
-
程序设计的实质是对确定的问题选择一种好的数据结构,并设计一种好的算法。
课程内容
数据结构的重要性
- 数据结构是计算机软件相关专业的专业基础课
- 在 教学计划中的地位 :承上启下、核心部分
- 数据结构是介于数学、计算机硬件和计算机软件之间的一门核心课程
- 类似于武术中的基本功,练武不练功,到头一场空
- 考研必考专业课4门专业课共150分【《数据结构与算法》占45分(更有很多学校只考数据结构与算法)】
- 找工作面试,主要考核的内容
数据结构研究的内容
起初计算机被人们视作数值计算的工具。
- 通常用计算机解决一个问题的步骤:
- 具体问题抽象成数学模型;
- 分析问题;
- 提取操作对象;
- 找出操作对象之间的关系;
- 用数学语言描述==>数据结构;【建立相应方程】<一般建立方程容易,数据元素之间的关系简单,但运算量大,人们就利用计算机来快速的完成复杂的计算>
- 设计算法;
- 编程调试运行
- 随着计算机应用领域的扩展,计算机被越来越多地用于非数值计算,比如信息的处理
线性表(线性关系)举例
来了一位新同学把他的信息加入到系统中;有同学转学或出国了要把他的信息删除;想查看某位同学的信息;修改某位同学改名字了在系统中也应相应的修改。
操作对象:每位学生的信息(姓名、学号、性别、籍贯、专业)
操作算法:查询、插入、修改、删除等
操作对象之间的关系:线性关系
数据结构:线性数据结构,线性表。
树(非线性关系)举例1
计算机之所以能和人对弈是因为已经将对弈的策略在计算机中存储好,由于对弈的过程是在一定规则下随机进行的,所以,为使计算机能灵活对弈,就必须把对弈过程中所有可能发生的情况及相应的对策都加以考虑。
操作对象:各种棋盘格局
操作算法:根据当前的格局,从提供的派生格局中选择一种。也就是下一步棋,则构成一个新的棋盘格局。
操作对象之间的关系:非线性关系(树)
树(非线性关系)举例2
磁盘根目录下有很多子目录及文件,
每个子目录里又可以包含多个子目录及文件但每一个子目录只有一个父目录
图(非线性关系)举例
最短路径问题。
从城市A到城市B有多条线路,但每条线路的交通费不同,
那么,如何选择一条线路,使得从城市A到城市B的交通费用最少呢?
-
综上所述:这些问题的共性是都无法用数学的公式或方程来描述,是一些“非数值计算”的程序设计问题,描述非数值计算问题的数学模型不是数学方程,而是诸如表,树和图之类的具有逻辑关系的数据
-
数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科
-
线性关系是互不相干的独立关系,而非线性则是相互作用
-
数据结构比较难学。抽象概念性强、需要一些数学逻辑思维,不然后面的学习就吃力一些了。
评论区