算法導論:3 分治法

1 分治法

算法思想:

  1. 將一個問題劃分爲若干個子問題。
  2. 遞歸的解決每一個子問題。
  3. 將子問題的解合併成爲整個大問題的解。

 

2 歸併排序

算法思想:

  1. 將一個數組分爲兩個子數組。
  2. 遞歸的對每一個子數組進行排序。
  3. 合併兩個有序子數組。

時間複雜度:

 

3 二分查找

在有序數組中查找數X。

算法思想:

  1. 把數X與數組中間元素比較,得到X所在的子數組。
  2. 遞歸的在這個子數組查找X。
  3. 無。

時間複雜度:

 

4 n次冪乘方問題

有實數X和正整數n計算X^n。 當n爲偶數時,X^n=X^(n/2)·X^(n/2),當n爲奇數時,X^n=X^((n-1)/2)·X^((n-1)/2)·X。

時間複雜度:

 

5 斐波那契數列

1)直接遞歸

2)自下而上遞歸式

3)樸素平方遞歸

4)矩陣法

 

6 n階矩陣相乘

1)樸素算法

  • 輸入:兩個矩陣A[aij]和B[bij] 1<=i<=n 1<=j<=n
  • 輸出:矩陣C[cij]=A[aij]·B[bij]
    for i ← 1 to n
    do for j ← 1 to n
        cij=0
        do for k ← 1 to n
            do cij ← cij+aik·bkj

    運行時間爲Θ(n^3)

 2)strassen算法

 

7 VLSI layout(超大規模集成電路)

1)樸素算法

2)優化算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章