数据结构-算法-时间复杂度
算法特性
- 有穷:步骤有穷、时间有限
- 确定:语句无二义
- 可行:可运行可实现
- 输入:输入可有可无
- 输出:与输入有确定关系
好算法的标准
- 正确:能满足问题
- 可读:方便阅读
- 健壮:容错处理
- 通用:对同数据类型的其他数据可用
- 高效率低存储
时间复杂度
算法的控制结构
- 顺序
- 分支
- 循环
- 加减乘除赋值…(原操作)
算法执行时间
(原操作的执行次数乘以原操作的执行时间)的累加
执行时间我们无法计算,但是,执行时间与原操作执行次数之和成正比,所以可用
频度T(n)( ->原操作的执行次数 : )表示算法的执行时间
T(n)转[O(n)时间复杂度]
保留T(n)的最高阶,忽略低阶项与常系数
一般判断算法也不用算T(n)了,目测出O(n)即可
- 常数阶O(1) :无循环语句
- 线性阶O(n):一重循环
- 平方阶O(n方):二重循环
- 立方阶O(n立方):三重循环
- 对数阶O(log2[n])树的结点是2的n次方,这是有关树的时间复杂度 / O(nlog2[n])典型堆排序
- 指数阶O(2的n次方)