八大基礎演算法 自己的通俗理解

dicksonjyl560101發表於2018-07-28

一些基礎演算法的理解,包括模擬法的理解。


1.模擬法:
將自然的過程或者語言直白的程式化,比如題目中的求解過程,我們直接程式化模擬求解。


2.字串處理:
常用的字串操作,KMP字串匹配演算法(用於複雜度高,需要最佳化時)。


3.遞迴:
古之慾明明德於天下者,先治其國;欲治其國者,先齊其家;欲齊其家者,先修其身;欲修其身者,先正其心;欲正其心者,先誠其意;欲誠其意者,先致其知,致知在格物。物格而後知至,知至而後意誠,意誠而後心正,心正而後身修,身修而後家齊,家齊而後國治,國治而後天下平。

當棧底不可見的時候,我們更適合用遞迴,當然遞迴也可以轉化為 陣列或變數和迴圈,但大多數情況下沒有這個必要。
很多簡單的遞迴我們完全可以利用迴圈來解決。比如很淺的呼叫之前的資料,且資料量固定。
和迴圈相比是兩種思考的方向。


4.分治法:
將大的問題轉化為很多小問題來解決,比如我要給8個數排序,我可以先給兩組4個數排序,給4個數排序可以先給兩組兩個數排序,這樣就講大問題化成了小問題。


5.排序:
熟練的掌握sort()的用法。sort(arr,arr+len,cmp),瞭解各大排序法的思想。

 
6.列舉法:
當可能的結果不多時,我們可以利用模擬法求解,然後利用陣列儲存,直接利用列舉法進行匹配。


7.貪心演算法:
選擇目前的最優解,還要選取合適的策略,此處的最優解可以累積成為最後的最優解。對於一些處理過的值,可以進行標記和儲存,便於我們從中選擇最優解,並在最優解的基礎上更加接近最後的最優解。


8.遞推法:
分為順推和逆推,根據相對應的關係和值進行遞推,比如斐波那契數列就是順推。順推有點像模擬。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2168550/,如需轉載,請註明出處,否則將追究法律責任。

相關文章