0、Python 算法分析
来源:互联网 发布:淘宝商城女装秋装睡衣 编辑:程序博客网 时间:2024/06/08 17:42
一、算法分析简介
1. 什么是算法分析?
- 算法是对问题解决的分步描述,算法分析主要就是从计算资源消耗的角度来评判和比较算法,而计算资源的消耗又可以通过时间复杂度和空间复杂度来描述
- 大 O(rder) 表示法
- 如果把每一小步看作一个基本计量单位,那么一个算法的执行时间就可以表达为它解决一个问题所需的步骤数,而步骤数又可以转化为对赋值语句的次数的统计
- 用 T 的函数来表示赋值语句数量,当规模 n 增加时,
T(n) 函数中增长最快的部分f(n) 即为此算法的 “大O” 级别,记作O(f(n))
- 常见的大 O 数量级函数
2. 算法评级举例:变位词判断问题
- 变位词定义:如果一个字符串是另一个字符串的重新排列组合,那么这两个字符串互为变位词
- 变位词判断代码实践(假设仅包含英文大小写字母)
# solution 1:排序比较,排序方法的复杂度往往都是O(n²)或者O(nlogn)# 所以排序贡献了这个函数主要的循环操作。最终,这个算法和排序的复杂度相同def anagram(s1, s2): if len(s1) == len(s2): alist1 = list(s1) alist2 = list(s2) alist1.sort() # 会按照 ASCII 码的大小进行排序 alist2.sort() return alist1 == alist2 else: return Falseprint(anagram('heartPY', 'earthPY'))True# solution 2: 统计52个字母出现的频次,时间复杂度为:O(n), 但稍微增加了点空间复杂度def anagram(s1, s2): if len(s1) == len(s2): c1 = [0] * 52 c2 = [0] * 52 for i in range(len(s1)): pos = ord(s1[i]) - ord('A') c1[pos] += 1 for i in range(len(s2)): pos = ord(s2[i]) - ord('A') c2[pos] += 1 return c1 == c2 else: return Falseprint(anagram('AbcddDB', 'dcbADB'))True
二、List 和 Dict 的各种操作性能评估(大 O 数量级)
1. List 和 Dict 的增删改查
2. List 和 Dict 各种操作的大 O 数量级
3. 使用 timeit 测试代码运行时间
三、参考资料
1、北大数据结构与算法
阅读全文
0 0
- 0、Python 算法分析
- python数据结构与算法 38 分析树
- python学习(swift 一致性hash算法分析)
- Python贝叶斯算法进行情感分析
- 关联分析的Apriori算法 in Python
- Python PCA主成分分析算法
- #python中的汉诺塔递归算法代码分析
- python实现关联规则分析Apriori算法
- 关联分析Apriori算法(python)
- Python源码中的算法分析 之 字符串匹配算法
- Python源码中的算法分析 之 字符串匹配算法
- 查找算法—折半查找算法分析与实现(Python)
- 排序算法—冒泡排序算法分析与实现(Python)
- 排序算法—选择排序算法分析与实现(Python)
- 排序算法—希尔排序算法分析与实现(Python)
- 排序算法—堆排序算法分析与实现(Python)
- 排序算法—归并排序算法分析与实现(Python)
- 排序算法—快速排序算法分析与实现(Python)
- 如何看待职业倦怠
- 网卡绑定7种模式
- list 列表遍历
- Genymotion模拟器出现Unable to create virtual device Fail to create SD card错误的解决
- 水题(Water problem,HDU 5867)
- 0、Python 算法分析
- JAVA并发编程实践 中英文ebook
- 绝对最大额定值(ABSOLUTE MAXIMUM RATINGS: ABS)是否可以超过
- EJB注解详细说明1
- vim/vi命令全解
- nyoj-27 水池数目
- 重装Windows 10系统
- Spring boot(三) 配置文件
- cnn