2013-07-28 41 views
0

我正在努力圍繞代碼制定出大O表示法。Big-O表示法和編碼

我理解的基本步驟,即

for (int i = 0; i < n; i++)爲O(n)

for (int i = 0; i < n; i++) 
    for (int j = 0; j < n; j++) 

爲O(n )

我很掙扎瞭解何處或如何計算對數值。

請問:

for (int i = 0; i < n * 2; i++)O(log n)的爲O(n log n)的爲O(log 2 N)

可有人請演示以代碼形式舉例說明以及如何形成符號。

我已經研究過並且不斷收集有關排序和列表被切碎等的示例,這在表單中是有意義的,但我似乎沒有得到如何將這些代碼應用於上面的代碼。

我是新來的整個編碼和大O符號。

我有我熟悉的對象,類,循環,功能,結構等 我忙學習C++,因爲它是我的課程的一部分。 我的課本並沒有很好地解釋對數big-o的計算。

+0

你的問題可能會得到在http://programmers.stackexchange.com/上找到更好的答案。 – BLaZuRE

+0

這是'O(n)',因爲你做了'2n'步驟。 – 2013-07-28 12:15:36

+0

開始劃分間隔時出現對數,例如二分法搜索;當你工作與平衡的樹木(修剪左或右早午餐)等 –

回答

1

一個可以代表代碼作爲遞推關係:

T(n) = T(n-1) + 2 * c, where c = the inner part of the code

,我們會做2 * n倍。

給予我們的解決方案,如: T(n) = 2 c n + c_1, where c_1 a constant

而且由於2 * c是一個常數,第二項,也是一個不斷脫落,我們可以這樣寫:

O(n)

+0

您好,請在代碼中添加一些格式,以便閱讀/理解。看看[這裏](https://stackoverflow.com/help/formatting)瞭解更多信息。 – Chaithanya

+0

謝謝你,好指針。 –

+0

當然,不客氣! – Chaithanya