PIPIONE
2019-08-28 10:07:46
什么是嵌套循環(huán)的Big-O,其中內(nèi)循環(huán)中的迭代次數(shù)由外循環(huán)的當(dāng)前迭代確定?以下嵌套循環(huán)的Big-O時(shí)間復(fù)雜度是多少:for(int i = 0; i < N; i++) {
for(int j = i + 1; j < N; j++)
{
System.out.println("i = " + i + " j = " + j);
}}它還是O(N ^ 2)嗎?
3 回答

藍(lán)山帝景
TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
是?;叵胍幌麓?O的定義:O(F(N))由定義說,運(yùn)行時(shí)間T(N) ≤ KF(n)的一些恒定?。在這種情況下,步數(shù)將是(n-1)+(n-2)+ ... + 0,其重新排列為0到n-1的和; 這是
T(n)=(n-1)((n-1)+1)/ 2。
重新排列,你可以看到T(n)總是≤1/ 2(n2); 根據(jù)定義,因此T(n)= O(n 2)。

慕斯王
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
如果忽略System.out.println,則為N平方。如果你假設(shè)它所花費(fèi)的時(shí)間在它的輸出中是線性的(當(dāng)然它可能不是),我懷疑你最終得到O((N ^ 2)* log N)。
我提到這不是挑剔,但只是要指出你在解決復(fù)雜性時(shí)不僅需要考慮明顯的循環(huán) - 你需要考慮你所稱的復(fù)雜性。
添加回答
舉報(bào)
0/150
提交
取消