按视点不同把数据结构分为逻辑结构和物理机构。
逻辑结构(数据之间的相互关系)包括:
- 集合结构:元素同属一个集合,相互之间平等没有联系
- 线性结构:数据之间线性链接
- 树形结构:一对多的层次关系
- 图形结构:多对多的关系
物理结构(存储方式)包括:
- 顺序存储结构:数据元素存放在地址连续的存储单元里
- 链式存储结构:数据元素存放在任意的存储单元里
算法
基本特性:输入、输出、有穷性、确定性、可行性
设计要求:正确性、可读性、健壮性、时间效率高、存储量低
抛开软硬件的因素程序的运行时间取决于算法的好坏和问题的输入量
-
时间复杂度:大O:O(),包含常数阶(O(1))、线性阶(O(n))、对数阶(O(logn))、平方阶(O(n2))、指数阶(O(2^n))等
- 常数替换为1
- 最高幂的常数可以去掉
- 只保留最高幂
事后分析:
代码写好,在前后加时间戳,计算两者之差,如果不合适,则白写啦,而且会受到硬件的影响;
事前分析:关注核心操作和输入规模的关联关系
1.需要考虑输入规模;2.采用什么样的策略和方案
函数调用时间复杂度分析:
- 空间复杂度
包含最坏时间复杂度和平均时间复杂度,默认情况说的就是最坏时间复杂度。