数据结构
相互之间存在一种或多种特定关系的数据元素的集合
逻辑结构
集合:所有数据再同一个集合中,关系平等。
eg: 列车上的乘客们
C语言中的数组
线性:数据与数据之间是一对一的关系。
eg:排队买包子
队列 向前是一个 向后也是一个 --- 一对一的关系----线性关系
C语言中的数组在内存。 (数组线性表)
树:一对多。
图:多对多。
物理结构:(在内存中的存储关系)
1、顺序存储,数据存放在连续的存储单位中,逻辑关系和物理关系一致
2、链式(malloc),数据存放的内存单位是随机或任意的,可以练习也可以不连续
struct Per //数据元素
{
char name; //数据项
int age;
char phone;
}
数据:可以输入输出,运行期间可以变化的。
数据项:有一定意义的数据 表示一个特定属性的变量
数据元素:多个数据项的整体
struct Per list[1000] ; //数据对象:数据元素的集合
abstruct datatype---->ADT
数据的类型
是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
原子类型:int , char ,float
结构类型:sturct , union
差别sturct 占内存更大,
union在使用的时候只能同一时间使用一种数据
抽象数据类型, 数学模型 + 操作
基础的操作有:增删改查。
程序 = 算法 + 数据
算法:
是解决特定问题求解步骤的描述,计算哪几种表现为指令的有限序列,每条指令表示一个或多个操作。
算法的特征:
1、 输入,输入特性: 输入是可选的,输出是必须的。
2、 有穷性,执行的步骤会自动结束,不能是死循环,并且每一步是在可以接受的时间内完成。
3、 确定性,同一个输入,会得到唯一的输出。
4、 可行的,每一个步骤都是可以实现的。
算法的设计:
1、 正确性
语法正确 合法的输入得到合理的结果 对精心选择,甚至刁难的测试都能正常运行结果正确。
2、 可读性
便于交流,阅读,理解。
3、 健壮性
4、 高效性
crc
时间复杂度 O( ) ;
算法时间复杂度
执行这个算法所花费时间的度量
推导时间复杂度
1,用常数1取代运行时间中的所有加法常数
2,在修改后的运行函数中,只保留最高阶项。
3,如果最高阶存在且不是1,则取除这个项相乘的常数。
O(1)<O(logn)<O(N)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
线性表
零个或多个数据元素的 有限 序列
5
=========================
在逗号位置折叠长的代码