本章节主要内容:
一、了解为何算法分析的重要性
二、用大“O”表示法来描述算法执行时间
三、了解在Python列表和字典类型中通用操作用大“O”表示法表示的执行时间
四、了解Python数据类型的具体实现对算法分析的影响
五、了解如何对简单的Python程序进行执行时间检测
主要知识点如下:
1)算法分析主要就是从计算资源的消耗的角度来评判和比较算法。我们想要分析两种算法并且指出哪种更好,主要考虑的是哪一种可以更高效地利用计算资源。或者占用更少的资源。
2)一种简单的计算程序时间复杂度的方式就是通过统计程序运行的时间来进行比较,在python中有一个time模块,通过调用time的time函数来获取时间,在程序运行开始和结尾时分别调用这个函数就可以获知程序的运行时间。
3)有时候对于同一个任务,采用不同的计算方法产生的结果相同但是时间消耗却差别很大,举个例子,计算1+2+3+...n
方法一:
def sum1(n):
sum = 0
for i in range(n):
sum += i
return sum
方法二:
def sum2(n):
sum = n*(n-1)/2
return sum
在上边两个方法中随着n的增大,sum2运行时间没有变大,而sum1的运行时间越来愈大。
在后面我们可以知道,sum1的运行时间为1+n,因此时间复杂度是O(n)
sum2的运行时间为1,因此其时间复杂度为O(1)
(4)Python中列表是一个很常用的数据结构,在列表中有一个pop方法对列表进行pop元素操作,ls.pop(n)移除ls中第n个元素并返回移除的元素,pop()默认移除最后一个元素,pop(0)移除第一个元素。
pop()的时间复杂度是O(1)
pop(0)的时间复杂度是O(n)
列表常用时间复杂度表对照
(5)Python中字典是一个很常用的数据结构。那么字典中的操作的时间复杂度是怎么样的呢,由于字典是通过key来访问元素,其访问和赋值都是O(1)的时间复杂度。
字典常用操作复杂度
网友评论