[数据结构笔记]绪论
1、基本概念和术语
-
数据:能被计算机识别,并输入给计算机处理的符号的集合。
-
数据元素:组成数据的基本单位。
-
数据项:一个数据元素可以由若干个数据项组成。
数据项是数据不可分割的最小单位。
-
数据对象:是性质相同的数据元素的集合,是数据的子集。
//性质相同:是指数据元素具有相同数量和类型的数据项。
既然数据对象是数据的子集,在实际应用中,处理得数据元素通常具有相同性质,在不混淆的情况下我们习惯将数据对象简称为数据。
-
数据结构:结构,简单理解就是关系;严格来说是指各个组成部分的相互搭配和排列的方式。而数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
2、逻辑结构与物理结构
按照视点不同分类,将数据结构分为逻辑结构和物理结构。
逻辑结构
是指数据对象中数据元素之间的相互关系。分为以下四种:
-
集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。
-
线性结构:线性结构中的数据元素之间是一对一的关系。
-
树形结构:树形结构中数据元素存在一对多的关系。
-
图形结构
物理结构(存储结构)
是指数据的逻辑结构在计算机中的存储形式。
数据的存储结构应正确反映数据元素之间的逻辑关系。而如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点。
-
顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
-
链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系并不能反应其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。
算法
基本特性:
- 有穷性:总在执行有穷步后结束,且每一步在有穷时间内完成。(不是无限循环也不是数学概念)
- 确定性:每条指令都有确切的含义,不存在二义性。
- 可行性:通过已实现的基本操作执行有限次。
设计要求:
- 正确性:满足问题需求,对于任何合法输入算法都有正确结果。
- 可读性:易理解易实现。
- 健壮性:对于非法输出的抵抗能力。
- 效率与低存储量需求
描述方法:自然语言、流程图、程序设计语言、伪代码。
1、算法时间复杂度
时间复杂度:在进行算法分析时,语句总的执行次数 T(n)是关于问题规模n的函数,进而分析 T(n)随n的变化情况并确定 T(n) 的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)= O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中 f(n)是问题规模n的某个函数。
推导大O阶方法
-
-
在修改后的运行次数函数中,只保留最高阶项。
-
通常,除非特别指定,我们提到的运行时间都是最坏情况的运行时间。
制作:BDT20040