算法复杂度

任务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)

 时间复杂度

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值