1. 程式人生 > 實用技巧 >資料結構-概論習題

資料結構-概論習題

(自己覺得有難度的黑體加粗)

判斷題

1.用漸進表示法分析演算法複雜度的增長趨勢。

T F

2.N2/1000是O(N)的。

T F

3.將長度分別為m,n的兩個單鏈表合併為一個單鏈表的時間複雜度為O(m+n)。

T F

4.對於某些演算法,隨著問題規模的擴大,所花的時間不一定單調增加。

T F

5.用漸進表示法分析演算法複雜度的增長趨勢。

T F

6.N2logN和NlogN2具有相同的增長速度。

T F

7.(logN)2O(N)的。

T F

8.演算法分析的兩個主要方面是時間複雜度和空間複雜度的分析。

T F

選擇題

1.下列函式中,哪兩個函式具有相同的增長速度

A.2N和NN
B.N和2/N
C.N2logN和NlogN2
D.NlogN2和NlogN

2.在資料結構中,從邏輯上可以把資料結構分成( )。

A.動態結構和靜態結構
B.緊湊結構和非緊湊結構
C.線性結構和非線性結構
D.內部結構和外部結構

3.與資料元素本身的形式、內容、相對位置、個數無關的是資料的( )。

A.儲存結構
B.儲存實現
C.邏輯結構
D.運算實現

4.通常要求同一邏輯結構中的所有資料元素具有相同的特性,這意味著( )。

A.資料在同一範圍內取值
B.不僅資料元素所包含的資料項的個數要相同,而且對應資料項的型別要一致

C.每個資料元素都一樣
D.資料元素所包含的資料項的個數要相等

5.給定N×N的二維陣列A,則在不改變陣列的前提下,查詢最大元素的時間複雜度是:

A.O(N2)
B.O(NlogN)
C.O(N)
D.O(N2logN)

6.下列程式碼

for(i=0; i<n; i++)
  for(j=i; j>0; j/=2)
     printf(“%d\n”, j);

的時間複雜度是:

A.O(N×i)
B.O(N)
C.O(N2)
D.O(NlogN)

7.斐波那契數列FN的定義為:F0=0, F1=1, FN=FN−1

+FN−2, N=2, 3, …。用遞迴函式計算FN的時間複雜度是:

A.O(logN)
B.O(N)
C.O(N!)
D.O(FN)

8.對於順序儲存的長度為N的線性表,訪問結點和增加結點的時間複雜度為

A.O(1), O(1)
B.O(1), O(N)
C.O(N), O(1)
D.O(N), O(N)

9.下列程式碼

if ( A > B ) {
    for ( i=0; i<N*N/100; i++ )
        for ( j=N*N; j>i; j-- )
            A += B;
}
else {
    for ( i=0; i<N*2; i++ )
        for ( j=N*3; j>i; j-- )
            A += B;
}

的時間複雜度是:

A.O(N3)
B.O(N4)
C.O(N5)
D.O(N6)