标签:循环 enter str border nlog 问题 时间 center nlogn
之前在看一些算法书的时候,常会遇到判断算法的时间复杂度的问题,阅读了《大话数据结构》的内容,弄明白了这个问题,在这里记录一下,在以后的学习中不断补充和改正。
首先把涉及到的名词列出来
n 问题规模。指算法完成的任务的输入变量,比如说for循环的循环次数。
f(n) 操作数量。指在n次的输入规模下,代码的执行次数。
T(n) = O(f(n)) 时间复杂度。当n趋于无穷大的时候,f(n) 得到的极限值。
推导大O阶的方法:
1 用常数1取代运行时间中所有的加法常数
2 在修改后的运行次数函数中,只保留最高阶项。
3 如果最高阶项存在且不是1,则去除与这个项相乘的常数。
| 执行次数函数 | 阶 | 非正式术语 | 
| 12 | O(1) | 常数阶 | 
| 2n+3 | O(n) | 线性阶 | 
| 3n2+2n+1 | O(n2) | 平方阶 | 
| 5log2n+20 | O(logn) | 对数阶 | 
| 2n+3nlog2n+19 | O(nlogn) | nlogn阶 | 
| 6n3+2n2+3n+4 | O(n3) | 立方阶 | 
| 2n | O(2n) | 指数阶 | 
常见的时间复杂度所耗费的时间从小到大依次为:
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
标签:循环 enter str border nlog 问题 时间 center nlogn
原文地址:https://www.cnblogs.com/guoqingpeng/p/12308464.html