0.算法的基本特点
0.有0个或多个输入。
1.有1个或多个输出
2.算法执行的步骤具有有穷性
3.每一步执行的语句所表达的含义是确定的
4.算法的设计思想一定是可行的
1.算法的衡量是用时间复杂度"大O表示"
因为每台机器执行的时间总是不同的,但是执行进本运算数量大体相同,为了衡量这个大体相同的概念,我们引入时间复杂度,时间复杂度包括最优时间复杂度,最坏时间复杂度,平均时间复杂度,一般情况最先研究最坏情况复杂度(数据的顺序是无序的)。
顺序结构--------复杂度相加
循环结构--------复杂度相乘
分支结构--------复杂度在分支中最坏的情况
忽略常数项(O(1))
2.常见时间复杂度以及大小比较
常数项 --------O(1)
线性项 --------O(N)
平方项 ---------O(N²)
立方项 ---------O(N³)
对数项 ---------O(logN)
指数项 ---------O(a^N)
NlogN ----------O(NlogN)
3.timeit衡量python代码的时间复杂度
timeit衡量时间
from timeit import Timer
def t1():
l1 = []
for i in range(1000):
l1.append(i)
text_time1 = Timer("t1", "from __main__ import t1")
print("append_time:{}".format(text_time1.timeit(1000)))
append_time:1.3199999999990997e-05
4.timeit衡量列表的复杂度