目录
1. 数据结构概念;
数据结构主要研究非数值计算问题的程序中的操作对象以及它们之间的关系,不是研究复杂的算法;
数据结构是计算机存储、组织数据的方式;
2. 算法;
2.1 概念;
算法是特定问题求解步骤的描述,在计算机中表现为指令的有限序列,算法是独立存在的一种解决问题的方法和思想;
2.2 算法与数据结构的区别;
算法是为了解决实际问题而设计的;
数据结构是算法需要处理问题的载体;
2.3 算法特性;
输入: 算法具有0个或多个输入;
输出:算法至少有1个或多个输出;
有穷性:算法在有限的补助之后会自动结束而不会无限循环,并且每一个步骤可以在接受的实际内完成;
确定性:算法中的每一步都有确定的含义,不会出现二义性;
可行性:短发的每一步都是可行的,也就是说每一步都能够执行有限的次数完成;
2.4 算法效率的度量;
常见的时间复杂度:
执行次数函数 | 阶 | 非正式术语 |
12 | O(1) | 常数阶 |
2n+3 | O(n) | 线性阶 |
3n^2+2n+1 | O(n^2) | 平方阶 |
5log2(n)+20 | O(logn) | 对数阶 |
2n+3nlog2(n)+19 | O(nlogn) | nlogn阶 |
6n^3+2n^2+3n+4 | O(n^3) | 立方阶 |
2^n | O(2^n) | 指数阶 |
常见的时间复杂度所耗费的时间从小到大依次是:
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
算法的空间复杂度:
算法的空间复杂度并不是计算所有算法的空间,而是使用的辅助空间的大小;