民國114年 第2梯次 電腦軟體設計(JAVA)乙級 學科

第22題

有三位學生各設計一個演算法解決同一個問題,並以兩組不同資料量進行測試,測試結果如下: (i)若資料量n 為10,第一位學生演算法之執行時間為1ms、第二位學生演…

題目

有三位學生各設計一個演算法解決同一個問題,並以兩組不同資料量進行測試,測試結果如下: (i)若資料量n 為10,第一位學生演算法之執行時間為1ms、第二位學生演算法之執行時間為 1/100ms、第三位學生演算法之執行時間為1/1000ms(ii),若資料量n 為100,第一位學生演算法 之執行時間為10ms、第二位學生演算法之執行時間為1ms、第三位學生演算法之執行時間為 1ms,下列敘述何者是正確的?

  1. (1) 第三位學生演算法之時間複雜度為O(n 2)
  2. (2) 當資料量n 小於 1000 時,第二位之學生演算法較具效率
  3. (3) 第一位學生演算法之時間複雜度為O(log n)
  4. (4) 第二位學生演算法之時間複雜度為O(n log n)

官方答案

(2) 當資料量n 小於 1000 時,第二位之學生演算法較具效率

解析

觀察資料量放大 10 倍時的成長:第一位由 1ms 變 10ms,同為 10 倍,複雜度為 O(n);第二位由 0.01ms 變 1ms,放大 100 倍,約為 O(n²);第三位由 0.001ms 變 1ms,放大 1000 倍,約為 O(n³)。故選項1(第三位為 O(n²))、選項3(第一位為 O(log n))、選項4(第二位為 O(n log n))皆不符。第二位與第一位比較,令 n²/10000 < n/10,可得 n < 1000,即資料量小於 1000 時第二位較具效率,選項2正確。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料