1.数据结构的研究内容(数据结构和算法)

1.数据结构的研究内容(数据结构和算法)

  • 1.1计算机解决问题:
    • 1.1.1计算机处理问题的思路:
    • 1.1.2计算机处理问题的思路:
  • 1.2数据结构和术语
    • 1.2.1数据定义:
    • 1.2.2数结构层级关系:
    • 1.2.2数结构包含的内容:
    • 1.2.2数据类型和抽象数据类型:
  • 1.3算法的算法分析
    • 1.3.1算法描述:

1.1计算机解决问题:

1.1.1计算机处理问题的思路:

1.将具体问题抽象为数学模型;
2设计算法;
3编程、调试、运行;

1.1.2计算机处理问题的思路:

1操作对象;2.操作算法;3.操作对象之间的关系;

1.2数据结构和术语

1.2.1数据定义:

  1. 能够被计算机处理的各种符号的集合:
  2. 信息的载体;是对客观事物符号化的表示;能够被计算机识别,存储和加工;
  3. 包括数值型(整数和实型)和非数值型(声音,图像,视频等)

1.2.2数结构层级关系:

1.数据:例如学生信息表,包含学生的编号,姓名,年龄,班级,专业等信息。
2.数据元素:学生信息表中每行学生的信息
3.数据项:每行学生信息中其中一个属性,例如学生的性别

1.2.2数结构包含的内容:

  1. 逻辑结构:数据元素之间的逻辑关系;
  2. 数据物理结构(存储结构):数据元素及其关系在计算机中表示的载体;
  3. 数据的运算和实现:对数据的一些操作以及这些操作在存储结构上的实现;

逻辑结构种类:
划分方式一:
1.线性结构:
数据有一个开始和中断节点,并且所有节点最多只有一个前驱和后继;例如;线性表、栈、队列、串;
2.非线性结构:一个节点可能有多个前驱和多个后继,例如:树,图

划分方式二:
1.集合结构:
结构中的数据元素属于一个集合以外,无任何其他关系;
2.线性结构:
数据有一个开始和中断节点,并且所有节点最多只有一个前驱和后继;例如;线性表、栈、队列、串;
3.树形结构:
数据元素之间存在一对多的层次关系
4.图形结构和网状结构
数据元素之间存在多对多的任意关系

存储结构的种类:
1.顺序结构
一组连续的存储单元,依次存储,例如C语言中的数组
2.链式结构
一组元素的存储数据元素,数据元素之间的逻辑关系用指针来表示(在存储数据时还存储了元素的地址)
3.索引结构
在存储数据元素的同时也存储了数据元素的索引表(例如:通讯录,加快查询效率)
4.散列结构
根据存储元素的关键字来直接结算节点的存储位置

1.2.2数据类型和抽象数据类型:

数据类型:
必须对程序中出现的每个变量、常量、表达式,明确说明的所属的数据类型
例如:c语言中 int,float、double,数据等
抽象数据类型(ADT)
从事务中抽取事务的抽取的数据模型和一些抽象运算,不考虑数据的物理存储结构
DSP的三元组表示:
D:数据对象
S:是D的关系集
F:是D的基本操作集合
定义格式:
ADT 抽象数据对象名{
数据对象:
数据关系
数据操作
}ADT 抽象数据对象名

基本操作定义格式:
参数表:复制参数只为操作提供输入值
初始条件:描述操作执行之前数据结构和参数应该满足的条件,若不满足,则操作失败,并且返回响应的出错信息。
操作结果:操作正常完成之后,数据结构的变化状况和应返回的结果

1.3算法的算法分析

1.3.1算法描述:

自然语言:英文,中文
流程图:传统流程图、NS流程图
伪代码:类语言(C语言)
算法

算法和程序概念:
算法是解决问题的一种方法和一个过程,考虑将输入转换为输出,一个问题又多个算法
程序:用程序设计语言对算法的具体实现
程序=数据结构+算法

算法特性:
有穷性:算法的步骤和时间是有限的
确定性:算法的每一条指令必须有确切的含义,没有二义性
可行性:算法是可执行的
输入:一个算法有0个或者多个输入
输出:算法必须有一个以上输出

算法设计要求:
正确性:不含与错误
可读性:方便人的阅读和交流,便于人的理解
健壮性:当输入错误数据时,算法恰当的做出反应进行相应吹;处理出错的方法,不是中断程序,而是返回错误信息
高效性:执行时间段

算法效率:
1.时间效率:算法所耗费的时间

2.空间效率:算法所占用的资源

算法运行时间=枚举语句的频度*该语句执行一次所需的时间
算法时间复杂度
基本语句重复执行的次数 是问题规模n的某个函数f(n)
算法的时间度量:T(n)=O(f(n))
n越大,执行时间越长
排序:n为记录数
矩阵:n为矩阵的阶数
多项式:n为多项式的项数
集合:n为元素个数
树:n为树的结点个数
图:n为图的顶点数或者边数

算法复杂度的分析方法:
1.找出语句频率最大的基本语句
2.计算基本语句的频率得到问题规模n的某个函数f(n)
3.取其数量级用符号“O”来表示

算法时间复杂度
最坏时间复杂度、平均时间复杂度、最好情况复杂度
对于复杂的算法,可以将它分成几个容易估算的部分,用乘法法则和加法法则来表示:
加法法则:
T(n)=T1(n)+T2(n)+T3(n)+…
乘法法则:
T(n)=T1(n)*T2(n)*T3(n)…

你可能感兴趣的:(数据结构,算法,数据结构)