1
我有這2個代碼,問題是要找出每次x = x + 1將運行多少次,因爲T1(n)代表代碼1和T2(n)代表代碼2.然後我必須找到每一個的BIG O,但我知道該怎麼做,事情是我被困在找到多少次(當然n)x = x + 1會跑。嵌套循環,多少次運行和複雜性
CODE 1:
for(i= 1; i <= n; i++)
{
for(j = 1; j <= sqrt(i); j++)
{
for(k = 1; k <= n - j + 1; k++)
{
x = x + 1;
}
}
}
代碼2:
for(j = 1; j <= n; j++)
{
h = n;
while(h > 0)
{
for (i = 1; i <= sqrt(n); i++)
{
x = x+1;
}
h = h/2;
}
}
我很堅持,並已經閱讀了很多,所以我問,如果有人能幫助我,請分析解釋我。
PS:我想在代碼2中,這個for (i = 1; i <= sqrt(n); i++)
會運行n * log(n)次,對不對?那又怎麼樣?
我忘了說在代碼2中,n = 2^k其中k是一個整數。如果不一樣。 – PavTze
@PavTze無關緊要結果是一樣的 – svs
@PavTze實際上你可以對'O(n sqrt(n)k)'代替,它與上面相同,但是是一個簡化版本。使用哪個是一種偏好。 – svs