python数据结构_大O符号_学习笔记(1)

1.概念

:大O符号是用来表达一个算法的复杂程度的,是一个数量级

2.代码

a = 1
b = 2
c = 3
for i in range(n):
	for j in range(n):
		x = i*i
		y = j*j
		z = i*j

for k in range(n):
	m = a*k + 5
	v = k*k

d = 100*c
e = c*d

3.分析

在上述代码中,分配操作数分为四个操作数的总和。第一项是3,即前面三个赋值语句;第二项是3n^2,两个嵌套循环,并且内层循环中有三个式子;第三项是2n,一个循环;第四个是2,两个赋值语句。
因此分配操作数T(n)=3+3n^2 + 2n + 2 = 3n^ 2+2n+5,当n变化到非常大时,其他项可以忽略不计,即O(n)=n^2

figure1 各操作数的指数增长趋势

4.其它

1)python排序函数是需要成本的,即一般排序sort函数的复杂度是O(n^2)或者O(nlogn)

2)复杂度的计算,一般是根据是否有嵌套和每一个循环的步长以及循环前后的赋值语句来进行分配操作数的计算的,然后假设n无穷大时,看看哪一项对分配操作数的影响最大,一般是取高次项

发布了39 篇原创文章 · 获赞 11 · 访问量 411

猜你喜欢

转载自blog.csdn.net/qq_45769063/article/details/104915516