一、数据结构的基本概念
1、基本概念与目的
- 数据结构(Data Structure)概念
数据结构是研究组成数据的数据元素的关系的学科。
- 数据结构研究目的
通过研究数据元素的关系,帮助我们在开发软件的时候更好的组建数据模型,让数据在内存中的操作更加的流畅高效。
逻辑关系 存储关系 运算关系
- 数据
数据即信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号总称。
- 数据元素
数据元素是数据的基本单位,又称为记录(Record)。
- 数据项
数据元素由若干数据项组成,数据项是数据中国的最小单位。
- 数据类型
数据类型是对数据元素取值范围与运算的限定。
- 数据之间的相互关系,包括三种关系:
(1)逻辑结构
表示数据元素之间的抽象关系(如邻接关系、从属关系)。
有四种基本的逻辑结构:集合结构、线性结构、树形结构、图状结构
(2)存储结构
数据的存储结构在计算机内的存储形式。
分为顺序存储结构、链式存储结构、索引存储结构、散列存储结构
(3)数据运算
对数据进行的操作,如 插入、删除、查找、排序等。
- 总结
二、算法的相关概念
1、算法的定义
- 算法(Algorithm)是解决特定问题的步骤的描述。
- 在计算机中算法是一个又穷规则(或语句、指令)的有序集合。
- 它确定了解决某一问题的一个运算序列。对于问题的初始输入,通过算法有限步的远行,产生一个或多个输出。
2、算法与程序
- 算法是解决问题的思想方法
- 程序是计算机语言的具体实现
3、算法与数据结构
- 算法设计:取决于选定的逻辑结构。
- 算法实现:依赖于采用的存储结构。
瑞士科学家沃思(N.Wirth)的著名公式: 数据结构 + 算法 = 程序 。
4、算法的特性
(1)有穷性
(2)确定性
(3)可行性
(4)输入
(5)输出
5、算法分析
1、解决一个问题可以有多种不同的算法,在算法正确的前提下,评估算法的好坏的方法:
- 正确性,可读性,健壮性,时间效率高和储存量低
— 消耗时间的多少:
— 消耗存储空间的多少:
— 容易理解、容易编程和调试、容易维护:
2、算法时间复杂度 —— 事后统计法
- 通过编写程序和设计测试数据,测试程序的运行时间,从而确定算法效率的高低。
事后统计法的缺陷:
— (1) 依赖于特定的计算机硬件和软件 。
— (2) 需要花费大量精力设计测试程序和测试数据。
3、算法时间复杂度 —— 事前估计方法
- 根据统计学的方法,对算法效率进行估算
程序在计算机运行所消耗的时间取决于:
— (1) 算法的设计 。
— (2) 算法的输入规模 。
— (3) 编译器对代码的优化 。
— (4)计算机执行指令的速度 。
- 引用了“O”
"O"表示一个数量级的概念。
根据算法中语句执行的最大次数(频度)来估算一个算法执行时间的数量级。
- 时间复杂度:
算法中基本操作重复执行的次数是问题规模n的某个函数f(n),
T(n) = O(f(n))
他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
- 语句的额度:是该语句重复执行的次数。
- 常见的时间复杂度