版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/funkstill/article/details/88389564
逻辑结构与物理结构
逻辑结构:集合结构、线性结构、树形结构、图形结构
物理结构:顺序存储结构、链式存储结构
数据类型:一组性质相同的值的集合及定义在此集合上的一些操作的总称。
抽象数据类型(ADT,Abstract Data Type):是指一个数学模型及定义在该模型上的一组操作。
算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法的特性:输入,输出,有穷性,确定性和可行性。
算法设计的要求:正确性,可读性,健壮性,时间效率高和存储量低。
算法时间复杂度:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记做:T(n)=O(f(n))。他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。
推导大O阶:
- 用常数1取代运行时间中的所有加法常数。
- 在修改后的运行次数函数中,只保留最高阶项。
- 如果最高阶项存在且不是1,则去除与这个项相乘的常数。
得到的结果就是大O阶。
常见时间复杂度:
执行次数函数 |
阶 |
非正式术语 |
12 |
O(1) |
常数阶 |
2n+3 |
O(n) |
线性阶 |
3n^2+2n+1 |
O(n^2) |
平方阶 |
5log2n+20 |
O(logn) |
对数阶 |
2n+3nlog2n |
O(nlogn) |
nlogn阶 |
6n^3+2n^2+3n+4 |
O(n^3) |
立方阶 |
2^n |
O(2^n) |
指数阶 |
常用的时间复杂度所耗费的时间从小到大:
O(1)< O(n)< O(n^2)< O(logn)< O(nlogn)< O(n^3)< O(2^n)