Python 算法(一)
算法
算法是什么?为什么要用算法?
算法是解决问题的思路
题目:
a + b + c =1000 a^2 + b^2 = c^2
策略一:
# a,b,c的取值范围为 0-1000
# 遍历 a b c ,
# 如果满足两个条件
# 打印出a,b,c
但是这样的话,时间复杂度 O(n**3)
要等很久 才出结果
策略二:
# 由已知 c的值确定,将c的值替换
# 遍历2次a ,b 当遍历b的时候,由于a,b已确定,可计算出c的值,
# 如果满足 a + b + c ==1000且 a^2 + b^2 = c^2
# 打印出a, b, c
>>>for a in range(0, 1001):
for b in range(0, 1001):
c = 1000 - a - b
if a ** 2 + b ** 2 == c ** 2:
print(a, b, c)
0 500 500
200 375 425
375 200 425
很快就出来了
不同的算法,程序的优劣不一样.
theSum = 0 执行算1次
for循环()并不算
里面的循环执行 n次
return执行一次
总共执行 n+2次
O(n)
计算 时间复杂度
3n^2 + 2n + 4
# 放时间复杂度表达式中最有意译的一项: n^2
O(n^2)
思考:
-
问题: 时间复杂度是什么? 时间复杂度表达式是什么? 内面一项放哪一项?
-
算法作用于数据结构还是数据结构作用于算法? 算法和数据结构谁先出现的?
-
python中list的append()方法为什么要那么实现?
-
数据结构是什么?
-
如果我想要查询某个学生的成绩,使用以下哪种数据结构较好? 分将阐述一下每种数据结构最坏情况的时间复杂度是多少?
使用不同的形式组织数据, 在基于查阅时的时间复杂度是不一样的.因此认为算法是为了解决问题而设计的, 数据结构是算法需要处理问题的载体.
- 四种插入列表的方式 怎么计算每种耗时呢?
答案:
-
衡量算法策略所耗时间的一种方法. O(n). 放表达式中最有意义的一项
-
算法作用于数据结构中. 数据结构是基于算法实现的. 先有算法,才有数据结构
-
因为这么实现可以使我的性能更优,所以是先有了算法才有数据结构.
只不过在日常生活中,我们说,在不同的数据集中,使用不同的算法
-
对于数据(基本类型的数据(int, float, char) 的组织方式就被称为数据结构
-
第三种, 因为第三种的时间复杂度为 O(1), 第一种 O(n), 第二种O(n)
-
# 1 def test01(): alist = [] for i in range(1000): alist += [i] reutrn alist # 2 def test02(): alist = [] for i in range(1000): alist.append(i) return alist # 3 def test03(): alist = [i for i in range(1000)] return alist # 4 def test04(): alist = list(range(1000)) return alist
可以使用python的 timeit库的Timer模块平均耗时来完成,
from timeit import Timer
time = Timer('test01()',)
if __name__ == '__mian__':
# 两个参数 即将被执行的函数strmt 以及 函数执行需要的环境设置setup
timer = Timer('test01()', 'from __main__ import test01')
# 计算1000次的平均耗时
timer.timeit(1000)
posted on 2020-08-19 23:59 sunnywillow 阅读(95) 评论(0) 编辑 收藏 举报