Ⅰ 兩道JAVA題目,求大神解答
A、
循環執行n次,時間復雜度為O(n)。
B、
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
第一重循環每1次,第二重循環n次,第一重循環每共n次,所以這個循環總共n²次
for(int i=0;i<n;i++)
for(int j=0;j<i;j++)
這個循環總共執行1+2+...+n=(1+n)n/2次
總共循環n²+(1+n)n/2次,時間復雜度為O(n²)。
C、
for(int i=1;i<=n;i*=2)
for(int j=1;j<=n;j++)
第一重循環每1次,第二重循環n次,第一重循環每共log2n次,所以這個循環總共nlog2n次,時間復雜度為O(nlog2n)。
D、
for(int i=1;i<=n;i*=2)
for(int j=1;j<=i;j++)
這個循環總共執行1+2+...+log2n=(1+log2n)log2n/2次,時間復雜度為O(n)