1.1 数据结构基础知识
数据结构分为逻辑结构和物理结构(存储结构)
数据结构的逻辑关系
(1)集合
数据元素同属于一个集合,无其他关系
(2)线性结构
线性结构的数据元素是一对一的,唯一的开始唯一的结束
(3)树形结构
树形结构的数据元素是一个对多个,可以发出多个分支
(4)图形结构
图形结构的数据元素是多个对多个
数据结构的存储结构
(1)顺序存储
把数据存放在地址连续的数据单元,例如数组。插入和删除需要移动大量元素
(2)链式存储
哥哥与弟弟位置不相邻,但是哥哥知道弟弟的地址,很容易找到弟弟
链式每个节点除了数据域还有一个指针域,记录下一个元素的存储地址。
1.2算法复杂度
算法的特性
(1)输出
算法至少有一个或多个输出
(2)有穷性
执行若干次后结束,不能永不停止
(3)确定性
每条语句有特定的含义,无歧义
(4)可行性
每一步都是可行的,在当前环境可通过有限次运算实现
算法设计要求
(1)正确性
程序正常运行,无语法错误
(2)可读性
便于他人阅读以及后期调试和修改
(3)健壮性
输入数据不合法后,返回错误
(4)高效性
算法运行效率高,消耗时间短
(5)低存储型
算法所需要的存储空间低
算法效率的度量方法
(1)算法采用的方案,策略
(2)编译产生的代码质量
(3)问题的输入规模
(4)机器执行指令的速度
时间复杂度 O(f(n))
算法基本运行的执行次数T(n)作为时间复杂度的度量标准
大O法
常数阶O(1) 线性阶O(n) 平方阶O(n^2) 对数阶O(logn)
常用的时间复杂度
O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n*n)
空间复杂度
辅助空间事衡量空间复杂度的关键因素
栈上的数据先进后出 、后进先出
插播
new开辟的空间在堆上,其他变量开辟的空间在栈上。new开辟的空间需要用指针接收