天天看點

資料結構與算法入門-算法介紹(python版本)

//2020.02.29

資料結構與算法入門(python版本)

第1章 評判算法的優劣名額有哪些?

課時1:算法的基本概念

資料結構與算法入門-算法介紹(python版本)

1、算法Algorithm是一個計算過程,是指解決一個問題的方法.

2、資料結構是指資料存儲的一種結構方式,是靜态的.

3、程式=資料結構+算法(尼古拉斯凱奇說過的一句著名的話).

課時2:時間複雜度介紹

資料結構與算法入門-算法介紹(python版本)

1、估計不同算法運作的快慢方式:時間複雜度

2、時間複雜度是指:用來評估算法運作效率的一個式子(機關),與電腦的配置無關,與算法的運作量無關;

資料結構與算法入門-算法介紹(python版本)
3、時間複雜度的表示方法一般使用O(n)來表示,其中O表示估計的意思,括号裡的n表示計算算法複雜度大小的式子,O(1)中的1表示的是一個運作機關,不是1秒;
資料結構與算法入門-算法介紹(python版本)

4、判斷時間複雜度的方法:

(1)一般确定問題的規模n;

(2)循環減半過程logn;

(3)k晨關于n的循環就是n的k次方

資料結構與算法入門-算法介紹(python版本)

課時3:空間複雜度介紹

1、空間複雜度:用來評估算法占用記憶體大小的式子(n不同,記憶體占用不同)

2、空間複雜度表示方法與時間複雜度完全一樣

3、原則:空間換時間,争取使用者時間最短。

資料結構與算法入門-算法介紹(python版本)
課時4:漢諾塔問題的算法遞歸講解
資料結構與算法入門-算法介紹(python版本)
資料結構與算法入門-算法介紹(python版本)
資料結構與算法入門-算法介紹(python版本)
資料結構與算法入門-算法介紹(python版本)

1、遞歸式子:h(n)=2h(n-1)+1

2、使用遞歸算法可以實作計算

python實作漢諾塔問題遞歸算法:

#遞歸算法計算
#漢諾塔問題的遞歸算法
def hannuota(n,a,b,c):
    if n>0:
        hannuota(n-1,a,c,b)
        print("moving from %s to %s" % (a,c))
        hannuota(n-1,b,a,c)
hannuota(3,"A","B","C")

#函數遞歸算法f(n)與f(n-1)的關系知道
def f(n):
    if n==1:
        return 1
    else:
        return 2*f(n-1)+1
print("輸出結果為:%d" %f(64))

        
資料結構與算法入門-算法介紹(python版本)