算法导论学习笔记(2)

big O notation:类比为小于等于       n2+O(n)=O(n2)

big Omega notation Ω:类比为 大于等于  

Θ:类比为等于

严格符号:小o与小ω:类比为小于和大于

 

解递归方法:

1、替换法:guess the form,verify by induction,solve the consts

2、递归树法

3、master method:之应用于特定情况

    T(n)=aT(n/b)+f(n)------>compare f(n) with n^(log_b a)---------->3 cases

 

 

divide-conquer method:

1.divide    2.conquer    3.combine

Ex:归并排序、二分查找、乘方问题分治法、斐波那契数列平方递归算法、矩阵乘法分治算法、VLSI布局H布局

fibonacci numbers:递归算法(指数级时间)bottom-up算法(linear)朴素平方递归(因浮点、仅理论可行)平方递归(log_2 n)

其中递归算法与bottom-up算法的python实现:

import datetime
def fibo(n):
    if n==0:
        return 0
    elif n==1:
        return 1
    elif n>=2:
        return fibo(n-1)+fibo(n-2)

starttime = datetime.datetime.now()
print("递归算法计算:指数级时间增长\n",fibo(35))
endtime = datetime.datetime.now()
print("cost time:",endtime - starttime,end="\n\n")

def bottom_up(n):
    if n==0:
        return 0
    else:
        i=1
        f0=0
        f1=1
        while i<n:
            tmp=f1
            f1+=f0
            f0=tmp
            i+=1
        return f1
starttime = datetime.datetime.now()
print("bottom_up算法:线性增长\n",bottom_up(35))
endtime = datetime.datetime.now()
print("cost time:",endtime - starttime)
            
#时间复杂度更低的还有 平方递归算法:θ(log_2 n)
#  (Fn+1  Fn)=(1 1)^n
#  (Fn  Fn-1) (1 0)


递归算法计算:指数级时间增长
 9227465
cost time: 0:00:04.679061

bottom_up算法:线性增长
 9227465
cost time: 0:00:00.004988
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值