一、什么是数据结构
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
简单来说,数据结构就是数据元素之间存在的一种或多种特定的关系。而子啊数据结构中将这种特定的关系分成了两类
1、逻辑结构:是指数据对象中数据元素之间的相互关系
集合结构:是指集合结构中的数据元素除了同属一个集合之外没有什么其他关系。
特点:在同一个集合之间的数据元素是相互平等的。
线性结构:线性结构中的数据元素之间是一对一的关系
特点:前后元素是相互连接的
树形j结构:树形结构中的数据元素之间存在一对多的层次关系
特点:层与层之间存在对应的关系。
图形结构:图形结构的数据元素是多对多的关系。
注意:逻辑结构是针对具体问题的,是为了解决某一个问题,在对应的问题,选择一个合适的数据结构表示元素之间的逻辑关系
2、物理结构
顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的
特点:用数组来实现 增加了内存的消耗 查改快
链式存储结构:是把数据元素存放在ren'任意的存储单元中,这组cun'存储单元可以是连续的,也可以是不连续的
特点:用节点来实现 提高资源的使用率 增删快
二、算法的概述
算法是解决特定问题的一种方式,具有五个基本特性:输入、输出、有穷性、确定性和可行性。
1、算法设计的要求
a、算法的正确性
b、算法的可读性
c、算法的健壮性
d、时间效率高和存储量低
2、判断算法的好坏
事后统计的方法:在算法运算结束后进行比较
缺点:1、需要考虑外部因素例如:硬件、编程语言,
2、如果程序处理的数据大、会花费大量时间,
3、如果数据量过小,时间都差不多,相差几乎为零)
事前分析估算方法:在运行前使用统计进行估算,
3、算法是时间复杂度:算法复杂度,即算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。
分类:常数阶O(1) 1表示不随N的增大而增大
线行阶O(n) 随着N的增大而增大 线性阶忽略常数,忽略N的系数
对数阶O(logn)
平方阶O(n的平方)
特点:一般考虑都是忽略常数,以及考虑的都是最坏情况
时间复杂度大小排序:O(1)<O(logn)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)