算法圖解之大O表示法


什么是大O表示法

大O表示法可以告訴我們算法的快慢。

大O比較的是操作數,它指出了算法運行時間的增速。

O(n) 括號里的是操作數。

 

舉例

畫一個16個格子的網格,下面分別列舉幾種不同的畫法,並用大O表示法表示

1.  一次畫一個格子。O(n)

 

2. 折疊紙張,折疊四次就能出現16個格子。O(log n)

 

大O表示法所表示的是一個算法在最糟糕情況下的運行時間。

 

一些常見的大O運行時間

  • O(log n),也叫對數時間,二分查找。

  • O(n),也叫線性時間,簡單查找。

  • O(n * log n),快速排序——一種速度較快的排序算法。

  • O(n²),選擇排序——一種速度較慢的排序算法。

  • O(n!),旅行商問題的解決方案——一種非常慢的算法。

  

主要啟示

  • 算法的速度指的是操作數的增速,而非時間。

  • 談論算法速度說的是隨着輸入的增加,其運行時間將以什么樣的速度增加。

  • 用大O表示法表示算法的運行時間。

  • 隨着元素的增加,快算法比慢算法增加的速度是指數級的。比如,O(log n)和O(n)

 

旅行商問題

旅行商問題用大O表示法就是O(n!),沒錯,就是有這么慢的算法。這個問題是說的一個銷售員,要去5個城市,他想規划一下最短距離,然后選出最短的距離。5個城市一共有120種規划方案(5!)。n個城市就有n!種規划方案。旅行商問題在計算機科學領域是無解的。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM