您的位置:首页 > 其它

算法的时间复杂度示例

2015-04-04 00:55 363 查看
本文是学习数据结构的笔记。

【效果图】



【代码】

# example.py

# 算法时间复杂度示例

def func_01(n):
''' 时间复杂度O(Log(Log(N))) '''
import math
i = n
count = 0
while i > 1:
i = round(math.sqrt(i)) # 注意:sqrt(i)!
count += 1
return count

print('时间复杂度O(Log(Log(N))),N=2000000000000000000,循环{}次'.format(func_01(2000000000000000000)))

def func_02(n):
''' 时间复杂度O(Log(N)) '''
i = n
count = 0
while i >= 1:
i = i // 2 # 注意:// 2!
count += 1
return count

print('时间复杂度O(Log(N)),N=100000000,循环{}次'.format(func_02(100000000)))

def func_03(n):
''' 时间复杂度O((Log(N))^2) '''
i = 1
count = 0
while i <= n:
j = n
while j > 0:
j = j // 2 # 注意:// 2!
count += 1
i = i * 2 # 注意:* 2!
return count

print('时间复杂度O((Log(N))^2),N=100000000,循环{}次'.format(func_03(100000000)))

def func_04_01(n):
''' 时间复杂度O(Sqrt(N)) '''
i = s = 1
count = 0
while  s < n:
i = i + 1
s = s + i
count += 1
return count

print('时间复杂度O(Sqrt(N)),N=10000,循环{}次'.format(func_04_01(10000)))

def func_04_02(n):
''' 时间复杂度O(Sqrt(N)) '''
i = 1
count = 0
while i * i < n:
count = count + 1
i = i + 1
return count

print('时间复杂度O(Sqrt(N)),N=10000,循环{}次'.format(func_04_02(10000)))

def func_05(n):
''' 时间复杂度O(N) '''
count = 0
for i in range(1, n):
count += 1
return count

print('时间复杂度O(N),N=100,循环{}次'.format(func_05(100)))

def func_06_01(n):
''' 时间复杂度O(N*Log(N)) '''
count = 0
for i in range(1, n):
j = 1
while j <= n:
j = j * 2 # 注意:* 2!
count += 1
return count

print('时间复杂度O(N*Log(N)),N=1000,循环{}次'.format(func_06_01(1000)))

def func_06_02(n):
''' 时间复杂度O(N*Log(N)) '''
count = 0
for i in range(1, n):
j = 1
while j < n:
j = j + i # 注意: + i!
count = count + 1
return count

print('时间复杂度O(N*Log(N)),N=1000,循环{}次'.format(func_06_02(1000)))

def func_06_03(n):
''' 时间复杂度O(N*Log(N)) '''
count = 0
for i in range(1, n // 3): # 注意:// 3!
j = 1
while j <= n:
j = j + 4 # 注意:+ 4!
count = count + 1
return count

print('时间复杂度O(N*Log(N)),N=1000,循环{}次'.format(func_06_03(1000)))

def func_07(n):
''' 时间复杂度O(N*(Log(N))^2) '''
count = 0
for i in range(1, n):
j = 1
while j <= n:
k = 1
while k <= n:
count += 1
k = k * 2 # 注意:* 2!
j = j * 2 # 注意:* 2!
return count

print('时间复杂度O((N*Log(N))^2),N=100,循环{}次'.format(func_07(100)))

def func_08(n):
''' 时间复杂度O(N^2) '''
count = 0
for i in range(n):
for j in range(n):
count += 1
return count

print('时间复杂度O((N^2),N=100,循环{}次'.format(func_08(100)))

def func_09(n):
''' 时间复杂度O(N^3) '''
count = 0
for i in range(n):
for j in range(n):
for k in range(n):
count += 1
return count

print('时间复杂度O((N^3),N=50,循环{}次'.format(func_09(50)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: