宿題でビッグ シータを計算するように頼まれましたが、この分野に関する講義資料は少し少なめでした。
与えられたループ
for (x = 1; x <= n; x *= 2){
for(y = 1; y <= n; y += 2)
t++;
私は実行チャートを次のように作成しました
x y
1 1, 3, 5, 7 ... n-2, n
2 1, 3, 5, 7 ... n-2, n
4 1, 3, 5, 7 ... n-2, n
8 1, 3, 5, 7 ... n-2, n
log n (n+1)/2
私を悩ませているのは、内側のループインクリメンターです。これは (n+1)/2 回実行されるため、ビッグ シータは (n log n + log n)/2 である必要があります。
私は正しいですか?