二、演算法
演算法定義
演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示一個或者多個操作。
演算法的特性
- 輸入和輸出
演算法具有零個或多個輸入,但是至少有一個輸出,演算法是一定需要輸出的,輸出的形式可以是列印,後者返回值
- 確定性
演算法的每個步驟都具有確定的含義,不會出現二義性,一個條件下之意一條執行路徑,相同的輸入也只能有唯一的結果,誒個步驟都被精準定義而不會有歧義。
- 有窮性
演算法在執行有限步驟後,自動結束不會出現無限迴圈,並且每一步都在可接受的時間內完成。有窮指的是實際應用當中合理的、在可行方案中是最優的有邊界。
- 可行性
演算法的每一步都是能夠通過執行有限次數完成的,並能得到正確的結果
演算法的設計要求
- 正確性
1、演算法程式沒有語法錯誤:最基本的要求
2、對於合法的輸入資料能得到正確的結果
3、對於非法的輸入資料能得出滿足規格說明的結果,也就是做了特殊資料的判斷處理。
- 可讀性
便於閱讀、理解和交流。我們寫程式碼的目的,出列讓計算機執行外還有一個更重要的目的是為了便於他人閱讀,讓人理解和交流。
可讀性是演算法(也包括程式碼)好壞很重要的標誌。
- 健壯性
好的演算法應該對輸入資料不合法的情況做合適的處理。
- 時間效率高,佔用儲存少。
演算法應該儘量滿足時間效率高和儲存量(包括演算法執行過程中佔用的記憶體和硬碟儲存空間)低的需求。
演算法效率度量方法
一個程式的執行時間,依賴於演算法的好壞和輸入量的多少
在估計演算法執行時間時最可靠的就是計算對執行時間有消耗的基本操作的執行次數。應該把程式看成是執行演算法的一系列步驟,然後建立基本運算元量與輸入量多少的關係函式。
判斷一個演算法效率的時候,一般都更關注最高階項,忽略函式中的常數項和其他次要項。
演算法的基本操作次數y與輸入量的多少x有很大關係。例:
兩個演算法S1、S2的基本操作次數y1、y2,輸入量x,可能存在某個n值的存在,當x>n的時候總有y1>y2,又或者y2>y1,因此評估演算法的執行次數的時候應該看具體的輸入量多少。
演算法的時間複雜度
時間複雜度是演算法的時間度量。
推導O( )的技巧:
1.用常數1代替所有的加法項的常數。
2.在修改後的函式中,去掉次要項,只保留最高項。
3.使最高項為1,得到的就是O( )。
相關文章
- 排序演算法(二)排序演算法
- BiLSTM演算法(二)演算法
- 二分演算法演算法
- 演算法面試題(二)演算法面試題
- 演算法:N皇后二演算法
- 演算法實驗二演算法
- RSA演算法原理(二)演算法
- 演算法基礎---二分演算法演算法
- 推薦演算法(二)--演算法總結演算法
- 聊聊二分演算法演算法
- 常用10種演算法(二)演算法
- 演算法-二叉樹演算法二叉樹
- 1.3二分演算法演算法
- elasticsearch演算法之詞項相似度演算法(二)Elasticsearch演算法
- 字串匹配演算法(二)-BM演算法詳解字串匹配演算法
- 排名演算法(二)--淘寶搜尋排序演算法分析演算法排序
- AI演算法測評(二)--演算法測試流程AI演算法
- [演算法] 二、國王和金礦演算法
- 前端演算法 - 二叉樹前端演算法二叉樹
- 關聯分析(二)--Apriori演算法演算法
- 理解JVM(二):垃圾收集演算法JVM演算法
- #演算法#二分搜尋演算法
- 二分查詢演算法演算法
- Swift 演算法實戰之路(二)Swift演算法
- 經典演算法面試題(二)演算法面試題
- 演算法->二分查詢演算法
- 【演算法】二分查詢演算法
- 演算法知識梳理(12) - 二叉樹演算法第二部分演算法二叉樹
- 【ybtoj】二分演算法例題演算法
- 網格簡化 二 、QEM演算法演算法
- 2.1 k鄰近演算法之二演算法
- 演算法第二篇之分治演算法
- 匈牙利演算法模板(二分圖)演算法
- 排序演算法之——二分插入排序演算法排序演算法
- 《演算法筆記》7. 二叉樹基本演算法整理演算法筆記二叉樹
- 前端技術分享:演算法入門之“二分演算法”前端演算法
- 資料結構與演算法——二分查詢演算法資料結構演算法
- 五大常用演算法之二:動態規劃演算法演算法動態規劃