任务010: 简单的复杂度的回顾
任务011:归并排序:merge sort(归并)
Divide and conquer—分治算法(category 属于这个范畴)
A=[3,4,1,6,7,2,5,9]
目标:sort(A)
步骤:
1、将数组分成两部分
2、针对每部分排序
3、对前后两部分对比后排序
归并排序的时间复杂度是O(n logn)
#merge and sort
import numpy
import pandas
a=list(numpy.random.randint(0,100,size=5))
a.sort()
b=list(numpy.random.randint(0,100,size=5))
b.sort()
l_merge=[]
a_index=0
b_index=0
if a[len(a)-1]<=b[0]:
print("if")
l_merge.extend(a)
l_merge.extend(b)
elif a[0]>=b[len(b)-1]:
print("elif")
l_merge.extend(b)
l_merge.extend(a)
else:
print("else")
for i in a[a_index:]:
for j in b[b_index:]:
print(i,j,i>j)
if i>j:
l_merge.append(j)
b_index+=1
if a.index(i)==len(a)-1 and b.index(j)==len(b)-1:
l_merge.append(i)
else:
l_merge.append(i)
if a.index(i)==len(a)-1 and b.index(j)==len(b)-1:
l_merge.append(j)
a_index+=1
break
print("-"*30)
l_merge_data=pandas.DataFrame(l_merge,columns=['merge'])
任务012: Master Theorem 主方法
主定理(Master Theorem):一个问题的复杂度写成若干个子问题,提供了用渐近符号(大O符号)表示许多由分治法得到的递推关系式的方法。
任务013: 斐波那契数的时间复杂度
#斐波那契
def fib(n):
if n<3:
return 1
return f(n-1)+f(n-2)
fib(6)
时间复杂度