2011-01-23 45 views
1

可能重複:
Plain English explanation of Big O算法性能說明例:O(n)的

親愛的朋友們,

當我讀到一些算法的信息,偶爾,我遇到算法性能信息,如:O(1),O(n),O(n^2)等等。

我能否解釋如何翻譯和理解此性能數據?什麼樣的O(n)變體可用,它們在實踐中意味着什麼?

謝謝。

+2

維基百科是你的朋友在這裏。它有一個很好的文章。 http://en.wikipedia.org/wiki/Big_O_notation – 2011-01-23 20:14:37

+0

可能重複(其中包括)[大O的純英語解釋](http://stackoverflow.com/questions/487258/plain-english-explanation-of-大o) – delnan 2011-01-23 20:15:02

+0

謝謝,我已經在閱讀維基百科。最好的祝福。 – 2011-01-23 20:24:16

回答

7

您需要對big-O符號進行解釋。

它是一種算法複雜度的度量。由於N趨於無窮大,所需時間的方向就是這樣。

你需要注意的一件事是O(N)乘以常數仍然是O(N)。沒有像O(2N)那樣的東西。 O(1)意味着需要一個固定的時間,即所花費的時間量與您正在處理的數據量無關。 O(N)表示它與您正在處理的數據量成正比,因此如果處理一百萬條記錄需要一分鐘時間,則需要2分鐘來處理200萬條記錄。

O(N^2)意味着它是成比例的N. 1000記錄的方需要一分鐘,2000需要4分鐘,4000需要16分鐘等

可以還O(日誌N )和O(N log N)。您可以使用任何基礎進行日誌記錄,但通常使用日誌基數2進行度量。因此,一百萬條記錄將測量爲20,因爲2^20接近一百萬,而200萬條記錄將是21.對於N日誌N,一千條記錄將相當於10,000,因爲1000的日誌大約爲10. 2000個記錄將是22,000,因爲2000的日誌大約爲11.