資料結構與演算法 -PTA選擇判斷複習題(持續更新中)

?Suki發表於2020-11-21


第一章——褚論

第二章——線性表


  • (neuDS)資料的物理結構是指資料在計算機中的實際儲存形式。
    T

  • (neuDS)資料的物理結構是指資料在計算機中的實際儲存形式。
    F

  • 2N 和NN 具有相同的增長速度。
    F

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

  • 資料的邏輯結構說明資料元素之間的順序關係,它依賴於計算機的儲存結構。
    F 邏輯結構可用不同的儲存結構實現,此處要區分邏輯結構與物理結構的區別。

  • 演算法必須有輸出,但可以沒有輸入。
    T

  • 演算法獨立於具體的程式設計語言,與具體的計算機無關。
    T

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

  • O(n​2 ),O(1+2+···+n) 對應的演算法時間複雜度相同。
    T

  • 資料的邏輯結構與資料元素本身的內容和形式無關。
    T

  • 資料項是資料的最小單位。
    T

  • 資料的邏輯結構是指資料的各資料項之間的邏輯關係。
    F 邏輯結構就是資料元素間的邏輯關係,而不是資料元素內部的資料項之間的關係。

  • 資料結構概念包括資料之間的邏輯結構、資料在計算機中的儲存方式和資料的運算三個方面。
    T

  • 資料結構的抽象操作的定義與具體實現有關。
    F抽象本來就是不考慮具體的實現細節,只是對事物的本質和特徵的描述。

  • logN2 is O(N).
    T

  • n0.01​​ is O(logn).
    F

  • 以下關於資料結構的說法中正確的是____。
    A資料結構的邏輯結構獨立於其儲存結構
    B資料結構的儲存結構獨立於該資料結構的邏輯結構
    C資料結構的邏輯結構唯一地決定了該資料結構的儲存結構
    D資料結構僅由其邏輯結構和儲存結構決定

  • 給定程式時間複雜度的遞推公式:T(1)=1,T(N)=2T(N/2)+N。則程式時間複雜度是:
    O(logN)
    O(N)
    O(NlogN)
    O(N2)

  • 下列函式中,哪個函式具有最慢的增長速度:
    N​1.5
    ​​NlogN​2
    ​​N2​​logN
    N(logN)​2

  • 執行下面程式段時,執行S語句的頻度為()。
for(int i=0;i<n;i++)
for(int j=1;j<=i;j++)
     S;

n2
​n2 /2
n(n+1)
n(n+1)/2
這道題的標準答案應該是1+2+3+……+n-1=n(n-1)/2。
但實際考試做題選擇最接近的即可。


  • 在儲存資料時,通常不僅要儲存各資料元素的值,而且還要儲存()。
    資料的處理方法
    資料元素的型別
    資料元素之間的關係
    資料的儲存方法

  • 某演算法的時間複雜度是O(n​2​​ ),表明該演算法的( )。
    問題規模是n​2
    ​​問題規模與n​2成正比
    執行時間等於n​2
    ​執行時間與n​2成正比

  • 資料在計算機記憶體中的表示是指() 。
    資料的儲存結構
    資料結構
    資料的邏輯結構
    資料元素之間的關係

  • 設計一個好的演算法應該滿足正確性、可讀性、健壯性和高效性等要求。

  • 下面程式碼段的時間複雜度是()。
x=0;  
for( i=1; i<n; i++ )  
    for ( j=1; j<=n-i; j++ )  
        x++;

O(n)
O(n​2)
O(n​3​​)
O(2​n​​)
在這裡插入圖片描述

所以時間複雜度是O(n2)。


  • 下列程式碼
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;
}

的時間複雜度是:O(N4
if語句的時間複雜度是O(N4),else語句中的時間複雜度是O(N2),這裡一定要注意是N2,N3,而不是二次方三次方。


  • 測量演算法的執行時間
    下面的程式測量某個函式 F 的執行時間。
    請在空白處填寫適當內容,完成該程式。
#include <stdio.h>
#include <
time.h
>

int F(int x);

int main()
{
    clock_t t1, t2;
    double t;
    int x, y;

    printf("x = ? ");
    scanf("%d", &x);

    t1 = 
clock()
;

    y = F(x);

    t2 = 
clock()
;

    t = 
(t2 - t1) / (double)CLOCKS_PER_SEC
;

    printf("y = %d\n", y);
    printf("It took %.2f second(s)\n", t);

    return 0;
}

int F(int x)
{
    ......
}

執行效果示例
x = ? 25
y = 3712
It took 1.25 second(s)
注:圖中資料僅為樣例,實際結果可能不同。

相關文章