第一章作業2-演算法時間複雜度和空間複雜度
阿新 • • 發佈:2018-12-10
1-1
演算法分析的兩個主要方面是時間複雜度和空間複雜度的分析。 (1分)
T
1-2
N^2logN和NlogN^2具有相同的增長速度。 (2分)
F: N^2logN較快 ,取對數對增長影響還是蠻大的,畢竟裸的logn函式後期增長率趨近於零
1-3
2^N和N^N具有相同的增長速度。 (2分)
F: N^N炒雞快
1-4
100logN是O(N)的。 (1分)
F:大O表示法是不看係數的,所以是O(logN)的
1-5
(NlogN)/1000是O(N)的。 (1分)
F:是 O(nlogn)的
1-6
在任何情況下,時間複雜度為O(n2) 的演算法比時間複雜度為O(n*logn)的演算法所花費的時間都長。 (1分)
F:具體問題具體分析
1-7
對於某些演算法,隨著問題規模的擴大,所花的時間不一定單調增加。 (1分)
T
2-1
下面程式碼段的時間複雜度是(2)。(2分)
x=n; //n>1
y=0;
while( x≥(y+1)*(y+1) )
y++;
- O(1)
- O(n1/2)
- O(n)
- O(log2n)
2-2
下列程式碼
if ( A > B ) { for ( i=0; i<N*N/100; i++ )// if裡的迴圈為O(n^4) for ( j=N*N; j>i; j-- ) A += B; } else { for ( i=0; i<N*2; i++ ) //else 裡的迴圈為O(N^2)的 for ( j=N*3; j>i; j-- ) A += B; }
的時間複雜度是:(2分)
- O(N3)
- O(N4)
- O(N5)
- O(N6)
2-3
下列函式
int func ( int n )
{ int i = 0, sum = 0;
while ( sum < n ) sum += ++i;//等差數列求和
return i;
}
的時間複雜度是:(2分)
- O(logn)
- O(n^1/2)
- O(n)
- O(nlogn)
2-4
下列程式碼
for(i=0; i<n; i++) for(j=i; j>0; j/=2) printf(“%d\n”, j);
的時間複雜度是: (3分)
- O(N×i)
- O(N)
- O(N2)
- O(NlogN)
2-5
下面程式碼段的時間複雜度是()。 (2分)
x=0;
for( i=1; i<n; i++ )
for ( j=1; j<=n-i; j++ )
x++;
- O(n)
- O(n2)
- O(n3)
- O(2n)
2-6
要判斷一個整數N(>10)是否素數,我們需要檢查3到√N之間是否存在奇數可以整除N。則這個演算法的時間複雜度是:(2分)
- O(N/2)
- O(√N)
- O(√NlogN)
- O(0.5logN)
2-7
下列函式中,哪個函式具有最慢的增長速度:(2分)
- N^1.5
- NlogN2
- N^2logN
- N(logN)^2
2-8
給定N×N×N的三維陣列A,則在不改變陣列的前提下,查詢最小元素的時間複雜度是:(2分)
- O(N^2)
- O(NlogN)
- O(N^3logN)
- O(N^3)
2-9
計算機演算法指的是()。 (2分)
- 計算方法
- 排序方法
- 解決問題的有限運算序列
- 排程方法
2-10
計算機演算法必須具備輸入、輸出和()等五個特性。 (2分)
- 可行性、可移植性和可擴充性
- 可行性、確定性和有窮性
- 確定性、有窮性和穩定性
- 易讀性、穩定性和安全性