算法-时间复杂度

1 概述

描述发生了几次常数操作

常数操作:与数据量大小无关,固定的时间/过程;

最差情况估计整个时间复杂度;

2 冒泡排序时间复杂度

时间复杂度为最高阶;

O(n^2)

### 时间复杂度的计算方法与示例 时间复杂度是衡量算法效率的重要指标,通常使用大O符号(O-notation)来表示。它描述了算法执行时间与输入数据规模之间的关系,特别是在最坏情况下的运行时间增长趋势。 #### 计算规则 1. **忽略常数项**:例如,O(2n) 简化为 O(n)。 2. **保留最高阶项**:例如,O(n² + n) 简化为 O(n²)。 3. **忽略系数**:例如,O(3n²) 简化为 O(n²)[^1]。 #### 常见结构的时间复杂度 1. **顺序结构**: - 顺序执行的代码片段,其时间复杂度为各部分时间复杂度之和。 - 示例: ```python # 顺序结构示例 def sequential_example(n): for i in range(n): # O(n) print(i) for j in range(n): # O(n) print(j) ``` 上述代码的时间复杂度为 O(n) + O(n) = O(n)[^1]。 2. **嵌套循环**: - 嵌套循环的时间复杂度是各个循环次数的乘积。 - 示例: ```python # 嵌套循环示例 def nested_loop_example(n): for i in range(n): # 外层循环 O(n) for j in range(n): # 内层循环 O(n) print(i, j) ``` 上述代码的时间复杂度为 O(n) * O(n) = O(n²)[^1]。 3. **对数复杂度**: - 对数复杂度通常出现在每次操作将问题规模减半的情况下。 - 示例: ```python # 对数复杂度示例 def logarithmic_example(n): i = n while i > 0: print(i) i //= 2 # 每次将i除以2 ``` 上述代码的时间复杂度为 O(log n),因为每次循环将问题规模减半。 4. **递归算法**: - 递归算法时间复杂度需要通过递推公式进行分析。 - 示例: ```python # 递归算法示例 (斐波那契数列) def fibonacci(n): if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) ``` 上述代码的时间复杂度为 O(2^n),因为它涉及两个递归调用,导致指数级增长。 #### 综合示例 以下是一个包含多种结构的综合示例: ```python # 综合示例 def complex_example(n): # 顺序结构 for i in range(n): # O(n) print(i) # 嵌套循环 for j in range(n): # O(n) for k in range(n): # O(n) print(j, k) # 对数复杂度 l = n while l > 0: # O(log n) print(l) l //= 2 ``` 上述代码的时间复杂度为 O(n) + O(n²) + O(log n) = O(n²),因为最高阶项是 O(n²)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值