算法知识点总结——算法分析基础
生活随笔
收集整理的這篇文章主要介紹了
算法知识点总结——算法分析基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
算法=程序+數據結構
同樣的問題往往可以用多種算法來解決。(中學時代作文指導老師經常說:“答案是豐富多彩的”。很多生活中的事情都是這樣的)
例如:求兩個數的最大公約數:
(1)歐幾里得算法:gcd(m,n)=gcd(n,m%n)當m%n==0時,”n“的值即是所求。
(2)連續整數檢測算法:當一個輸入為0時候,就會出錯
- 將min{m,n}賦值給t
- m/t,如果余數為0,進入第三步,否則進入第四步
- n/t,如果余數為0,則t就是所求,否則進入第四步
- 將t-1,返回第二步
(3)中學時代的公共質因數算法
- 找到m的所有質因數
- 找到n的所有質因數
- 找出m和n的所有公因式
- 將公因式相乘即得所求。
如何求解質因數:
利用“埃拉托色篩選法”:
- 初始化2~n的連續數列
- 第i個循環中消去i的倍數
- 直到序列中沒有可消的元素為止,掙下的整數便是質數序列。
現在已經有許多改進版本的“埃拉托色篩選法”。這里便不再一一贅述了。
算法求解問題基礎:
- 對于給定的問題有完全的理解(考慮特殊情況;了解已有的算法的優缺點等)
- 了解計算設備的性能(輸入為海量數據;對于時間敏感的應用;...)
- 在精確解法和近似解法中做出選擇(有時近似算法可以作為精確算法的一部分)
- 算法的設計技術(分治法;蠻力法;變治法;減治法;...)
- 確定適當的數據結構
- 對算法進行描述(文字,偽代碼,流程圖...)
- 算法正確性的證明(數學歸納法;反向迭代法;近似算法的誤差不超出預定義的范圍即可)
- 算法分析(時間復雜度;空間復雜度;簡單性;一般性)
- 為算法寫代碼(一個好的算法是不斷修正的結果)
重要的問題類型
- 排序(對鍵排序:穩定(各自先后順序不變);在位(不占用額外的存儲空間))
- 查找(尋找查找鍵)
- 字符串處理(字符串匹配等問題)
- 圖問題(遍歷;最短路線;有向圖的拓撲排序;旅行商;圖填色問題等)
- 組合問題
- 幾何問題(最近對問題;凸包文圖等)
- 數值問題(實數在計算機中只能近似表示,則近似數的大量計算可能使舍入的誤差疊加,結果歪曲)
基本的數據結構
- 線性數據結構:數組、鏈表、棧和隊列...
- 圖(鄰接矩陣;鄰接鏈表)
- 樹
- 集合與字典
?
轉載于:https://www.cnblogs.com/wongyi/p/7722205.html
總結
以上是生活随笔為你收集整理的算法知识点总结——算法分析基础的全部內容,希望文章能夠幫你解決所遇到的問題。