学习严蔚敏数据结构: 第一集
2009-03-04 09:06
190 查看
先是听课笔记:
01. 第一集 第一章 绪论 1.1 数据结构讨论的范畴 数据结构是一门与程序设计密切相关的问题 1976年的一本书<算法 + 数据结构 = 程序设计> 程序设计: 为计算机解题编写的一组指令集 算法: 处理问题的策略 数据结构: 问题的数据模型的表示 概括的说: 数据模型讨论的是 非数值计算的程序设计中现实世界实体的数据模型 和在计算机中的表示的方法 以及这些数据模型进行的操作如何在计算机中实现 1.2 基本概念 1. 数据与数据结构 1). 数据: 所有能被输入到计算机中, 且被计算机处理的符号的集合 计算机操作的对象的总称 是计算机处理的信息的某种特定的符号表示形式 2). 数据元素: 数据中的一个"个体", 数据结构中讨论的基本单位, 但不是最小单位, 是数据项的集合 3). 数据项: 数据结构中讨论的最小单位 4). 数据结构: 带结构的数据元素的集合 5). 数据的逻辑结构可归结为下面四类: 1>. 线性结构 2>. 树形结构 3>. 图状结构 4>. 集合机构: 和数学上集合的概念一致, 集合中元素之间不存在任何关系, 某种意义上来说, 这也是一种关系 6). 数据结构的形式定义: 数据结构是一个二元组: Data_Structures = (D, S) 其中D为数据元素的有限集, S是D上关系的有限集 该形式定义强调了数据结构的逻辑 7). 数据的存储结构: 逻辑结构在存储器中的映像 1>. 数据元素的映像方法: 用二进制位(bit)的位串表示数据元素 2>. 关系集合的映像方法: 使用有序对(表示的方法) a. 顺序映像: 以存储位置的相邻表示后继关系 b. 链式映像: 以附加信息(指针)表示后继关系 8). 在不同的编程环境中, 存储结构可以有不同的描述方法 可以使用高级语言中已经存在的数据类型来描述数据的存储结构 2. 数据类型: 在用高级程序语言编写的程序中, 必须对程序中出现的每个变量、常量或表达式, 明确说出它们所属的数据类型. 数据类型是一个值的集合和定义在此集合上的一组操作的总称 3. 抽象数据类型(Abstract Data Type, 简称ADT): 是指一个数据模型以及定义在这个模型上的一组操作, 这里的数据模型在程序设计中就是数据结构 ADT有两个重要特征: 1). 数据的抽象: 用ADT描述程序处理的实体的时候, 强调的是其本质特征、 其所能完成的功能以及它和外部用户的接口(既外界使用它的方法) 2). 数据的封装: 将实体的外部特性和其内部实现细节分离, 并且对外部用户隐藏其内部实现细节 抽象数据类型的描述方法: 抽象数据类型可用(D, S, P)三元组表示, 其中D是数据对象, S是D上的关系集, P是对D的基本操作集 抽象数据类型的表示和实现: 抽象数据类型需要通过固有数据类型(高级语言中已经实现的数据类型)来实现 1.3 算法及算法的衡量 1. 算法 算法是为了解决某类问题而规定的一个有限长的操作序列. 一个算法必须满足以下五个重要特征: 1). 有穷性: 对于任意一组合法输入值, 在执行有穷步骤之后一定能结束, 即: 算法中每个步骤都能在有限时间内完成 这章讨论了数据与数据结构的一些基本的概念, 我之前并未曾专门的学习过数据结构这门课程, 以前大学也开过, 但是我玩心较重, 一节课也没上过, 被无情的荒废了(该打..) 我接触编程开始是C语言, 但C学的时间很短暂, 也就1个月时间, 之后就开始学习面向对象的东西(OO), 学的Java 我记得刚学Java, 就有两天专门看的是面向对象的一些基本特征: 封装、 继承和多态 现在看起来, 严老师的课程一开始提的也是这些东西, 看来有些东西是相通的...(什么? 你没发现? 往下看...) 你看数据类型的定义: 数据类型是一个值的集合和定义在此集合上的一组操作的总称 再看抽象数据类型的定义: 指一个数据模型以及定义在这个模型上的一组操作 好吧, 你再看类的定义: 类描述了具有相同特性(数据元素)和行为(功能)的对象的集合 不难得出这个结论: 类 == 抽象数据类型 抽象数据类型的重要特征: 数据的抽象、 数据的封装 面向对象的三大特征的实现的基础也是抽象, 而封装是实现抽象的有效手段 其实程序设计语言本质上都是一样: 都是人们用来解决实际问题的工具, 而能够解决的问题的复杂度就取决于对问题的抽象程度; 面向过程的语言以数据模型作为抽象单位, 粒度过细; 而面向对象语言使用类来作为抽象单位, 可以随意控制其大小, 比面向过程语言能解决的问题的复杂度提高了很多, 也就促进了当前软件工程的兴起和发展; 但是当软件体系越来越庞大之后, 以类为单位的抽象也渐渐不能抵挡人们解决面临问题的复杂度; 这时候组件技术的出现, 一定程度上弥补了面向对象在解决宏大问题上的苍白, 它的兴起, 带动了软件工程向更高层次上迈进; 好吧, 人类的欲望是无穷的, 由此诞生的需求是越来越庞大, 于是一个一个新的名词诞生了: SOA, 云计算等等; 不管有多少语言诞生和消亡, 程序设计语言的发展正沿着抽象能力越来越强的道路发展, 让我们拭目以待吧
相关文章推荐
- 严蔚敏版数据结构学习笔记(4):队列
- 严蔚敏版数据结构学习笔记和代码实现
- 严蔚敏版数据结构学习笔记(1):线性表的顺序表示和实现
- 学习 严蔚敏讲数据结构笔记08
- 学习 严蔚敏讲数据结构笔记11
- 学习 严蔚敏讲数据结构笔记19
- 学习 严蔚敏讲数据结构笔记23
- 严蔚敏数据结构学习(二)名词、术语、基本概念
- 学习 严蔚敏讲数据结构笔记09
- 学习 严蔚敏讲数据结构笔记12
- 学习 严蔚敏讲数据结构笔记20
- 学习 严蔚敏讲数据结构笔记24
- 数据结构学习笔记 图:深度优先搜索(严蔚敏版)
- 学习严蔚敏数据结构: 第四集
- 学习 严蔚敏讲数据结构笔记01
- 学习 严蔚敏讲数据结构笔记10
- 学习 严蔚敏讲数据结构笔记13
- 学习 严蔚敏讲数据结构笔记25
- 文件关键字学习 严蔚敏讲数据结构笔记28
- 学习严蔚敏数据结构: 第三集