【算法设计与分析】13 分治策略的设计思想
生活随笔
收集整理的這篇文章主要介紹了
【算法设计与分析】13 分治策略的设计思想
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
算法中很多方法都是可以采用分治策略進行設計與優化,那么什么是分治策略?如何使用分治策略進行算法的設計與分析?
文章目錄
- 1. 分治策略的基本思想
- 1.1 二分檢索的設計思想
- 1.2 二分歸并排序的設計思想
- 1.3 Hanoi塔的遞歸算法
- 2 小結
1. 分治策略的基本思想
- 分治策略(Divide and Conquer)
在設計分治策略時,一定要注意以下幾點:
下面以二分檢索的例子來分析分之策略的思想。
1.1 二分檢索的設計思想
- 設算法:Binary Search(T,l,r,x)。
- 輸入:排好序的數組T ,下標從l到r;數x。
- 輸出:j //若x在T中,則為下標,否則為0
給出下面的偽碼
二分檢索的設計思想:
二分檢索最壞情況下時間復雜度分析,在前面的文章中已經學習了如何分析算法的時間復雜度,如果不懂下面的公式的,可以多看看前面的文章。
W(n)=W(?n/2?)+1W(n)= W(\lfloor n/2 \rfloor)+1W(n)=W(?n/2?)+1
W(1)=1W(1) = 1W(1)=1
可以解出:
W(n)=?logn?+1W(n) = \lfloor logn \rfloor +1W(n)=?logn?+1
1.2 二分歸并排序的設計思想
- 設算法:Merge Sort(A,p,r)
- 輸入:A[p…r]
- 輸出:元素按從小到大排序額數組A
先看以下偽碼:
二分歸并的設計思想:
二分歸并排序的時間復雜度:假設n為2的冪次方,二分歸并排序最壞時間復雜度為:
W(n)=2W(n/2)+n?1W(n) = 2W(n/2) + n-1W(n)=2W(n/2)+n?1
W(1)=0W(1) = 0W(1)=0
可以解出:
W(n)=nlogn?n+1W(n) = nlogn - n + 1W(n)=nlogn?n+1
仔細體會著其中的分治策略
1.3 Hanoi塔的遞歸算法
Hanoi塔的算法設計思想:
2 小結
總結
以上是生活随笔為你收集整理的【算法设计与分析】13 分治策略的设计思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中memoryerror_解
- 下一篇: java 去停用词_Lucene学习之—