我想弄清楚算法的確切的大O值。我將提供一個例子:算法的大O複雜度
for (int i = 0; i < n; i++) // 2N + 2
{
for (int x = i; x < n; x++) // N * 2N + 2 ?
{
sum += i; // N
}
} // Extra N?
所以,如果我打破一些的這個下來,INT I = 0會O(1)中,i < n爲N + 1,I + +是N,乘內環由N:
2N + 2 + N(1 + N + 1 + N)= 2N^2 + 2N + 2N + 2 = 2N^2 + 4N + 2
添加的N爲循環終止和總和常數,= 3N^2 + 5N + 2 ...
基本上,我不是100%確定如何計算確切 O表示法,我的猜測是O(3N^2 + 5N + 2)。
使用Big-O時,可以省略常量和所有非最高階項。在這種情況下,O(3N^2 + 5N + 2)=> O(n^2)。這是因爲隨着n的增長,這些術語以n^2爲主,變得非常微不足道。 – Clip
你的情況是'N'? 「int i = 0將是O(1),」---呃,不。大O分析不是當你在一堆中加入不同的東西時。 – zerkms
邏輯上,'i