网站建设合同 域名续期,打开网页,百度推广的优化软件,乌克兰俄罗斯第一章绪论
1.1 什么是数据结构
数据结构是一门研究非数值计算的程序设计问题中#xff0c;计算机的操作对象以及他们之间的关系和操作的学科。
面向过程程序数据结构算法
数据结构是介于数学、计算机硬件、计算机软件三者之间的一门核心课程。
数据结构是程序设计、编译…第一章绪论
1.1 什么是数据结构
数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科。
面向过程程序数据结构算法
数据结构是介于数学、计算机硬件、计算机软件三者之间的一门核心课程。
数据结构是程序设计、编译、数据库、操作系统的基础。
1.2 基本概念和术语
数据 data对客观事物的符号表示在计算机中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据对象 data object性质相同的数据元素的集合是数据的一个子集。
数据元素 data element数据的基本单位在计算机程序中通常作为一个整体进行考虑和处理。
一个数据元素可以由若干个数据项(data item)组成数据项是不可分割的最小单位。
数据结构 data structure相互之间存在一种或多种特定关系的数据元素的集合。 数据元素相互之间的关系称为结构(structure)。
集合
线性结构 一对一
树形结构 一对多
图状结构/网状结构 多对多 数据结构的形式定义逻辑结构
数据结构是一个二元组 其中D是数据元素的有限集S是D上关系的有限集。 物理结构/存储结构数据结构在计算机中的表示映像包括数据元素的表示和关系的表示。
数据元素 -- 元素(element)/结点(node) 数据项 -- 数据域(data field) 数据元素之间的关系在计算机中有两种不同的表示方法
顺序映像 -- 顺序存储结构 借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
非顺序映像 -- 链式存储结构 借助指示元素存储地址的指针(pointer)表示数据元素之间的逻辑关系。 逻辑结构 -- 算法设计
物理结构 -- 算法实现 数据类型 data type是一个值的集合 和定义在这个值集上的一组操作的总称。
按值得类型可将数据类型分为两类
原子类型
结构类型
在某种意义上数据结构可以看成是“一组具有相同结构的值”
则结构类型可以看成由一种数据结构和定义在其上的一组操作组成。
软件系统的框架应建立在数据之上而不是建立在操作之上。即面向对象。 抽象数据类型 Abstract Data Type简称ADT是指一个数学模型以及定义在该模型上的一组操作。 |--值域 |--原子类型 atomic data type 原子类型的变量值是不可分解的如基本数据类型 |--固定聚合类型 fixed-aggregate data type 其值由确定数目的成分由某种结构组成如复数 |--可变聚合类型:表、树、图 variable-aggregate data type 值的数目不确定 |--多形数据类型 ploymorphic data type 多型数据类型就是泛型如Triplet |--操作 抽象数据类型可用以下三元组表示 其中D是数据对象S是D上的关系集P是对D的基本操纵。 基本操作有两种参数
赋值参数--只为操作提供输入值
引用参数--以打头为操作提供输入值并且返回操作结果。 1.4 算法和算法分析
算法有穷性、确定性、可行性、输入、输出
设计要求正确性、可读性、健壮性、时间复杂度、空间复杂度 算法效率的度量
一个特定算法的运行工作量的大小只依赖于问题的规模n即它是问题规模n的函数。
一个算法是由控制语句顺序、选择、循环和原操作固有数据类型的操作构成的算法的时间取决于两者的综合效果。
最深层循环内的语句中的原操作
T(n) O(f(n))
随问题规模n的增大算法执行时间的增长率和f(n)的增长率相同称作算法的渐进时间复杂度asymptotic time complexity,简称时间复杂度。
最坏情况下的时间复杂度。 常量阶 对数阶 线性阶 平方阶 指数阶 算法的存储空间需求
空间复杂度space complexity
若额外空间相对于输入数据量来说是常数则称此算法为原地工作。