23. 下列敘述何者正確?
(A)合併排序(merge sort)演算法的時間複雜度是 θ(n2)
(B)合併排序(merge sort)演算法的時間複雜度是 θ(nlgn)
(C)插入排序(insertion sort)演算法的時間複雜度是 θ(n2)
(D)插入排序(insertion sort)演算法的時間複雜度是 θ(nlgn)

答案:登入後查看
統計: A(2), B(66), C(24), D(9), E(0) #3123054

詳解 (共 2 筆)

#5868171
(B) 合併排序(merge sort)...
(共 157 字,隱藏中)
前往觀看
8
0
#6408761

好的,這題是關於合併排序(Merge Sort)和插入排序(Insertion Sort)這兩種排序演算法的時間複雜度。我們需要判斷哪個敘述是正確的。

時間複雜度通常用大 O (O)、大 Omega (Ω) 和大 Theta (Θ) 符號來表示。

  • O 表示漸近上界。
  • Ω 表示漸近下界。
  • Θ 表示漸近緊界(表示演算法的執行時間在最差和最佳情況下都與 g(n) 同階,或者在所有情況下都與 g(n) 同階)。

我們來看看這兩種排序演算法的典型時間複雜度:

  1. 合併排序(Merge Sort)

    • 合併排序使用分而治之的策略,不論輸入資料的初始狀態如何,它的遞迴分解和合併步驟所花的時間都大致相同。
    • 合併排序在最佳情況、平均情況和最差情況下的時間複雜度都是 Θ(nlogn)lgn 通常表示 log2n
  2. 插入排序(Insertion Sort)

    • 插入排序的效能受到輸入資料初始順序的影響。
    • 最佳情況:當輸入陣列已經 sorted 時,只需要線性遍歷一次,時間複雜度是 Θ(n)
    • 最差情況:當輸入陣列是逆序排列時,需要進行最多的比較和移動,時間複雜度是 Θ(n2)
    • 平均情況:時間複雜度是 Θ(n2)

現在我們來分析選項:

(A) 合併排序(merge sort)演算法的時間複雜度是 Θ(n2)

  • 這是錯誤的。合併排序的時間複雜度是 Θ(nlogn)

(B) 合併排序(merge sort)演算法的時間複雜度是 Θ(nlgn)

  • 這是正確的。合併排序在所有情況下的時間複雜度都是 Θ(nlogn)

(C) 插入排序(insertion sort)演算法的時間複雜度是 Θ(n2)

  • 這個敘述對於插入排序的最差情況和平均情況是正確的。然而,由於插入排序在最佳情況下是 Θ(n),所以嚴格來說,用單一的 Θ(n2) 來描述插入排序所有情況下的時間複雜度是不完全精確的。但在某些語境下,如果指的是主要的(如最差或平均)情況,也可能會這樣表示。

(D) 插入排序(insertion sort)演算法的時間複雜度是 Θ(nlgn)

  • 這是錯誤的。插入排序的最差和平均情況時間複雜度是 Θ(n2),最佳情況是 Θ(n)

比較選項 (B) 和 (C)。選項 (B) 關於合併排序的敘述是完全精確且正確的,合併排序在所有情況下都是 Θ(nlogn)。選項 (C) 關於插入排序的敘述,雖然對最差和平均情況是正確的,但由於最佳情況是 Θ(n),用單一的 Θ(n2) 來概括所有情況可能不夠嚴謹。

在這種題目中,如果有一個選項提供了在該符號下(這裡是 Θ)普遍成立的敘述,而其他選項有例外或不夠精確,那麼普遍成立的敘述通常是正確答案。

因此,敘述 (B) 是最準確和無歧義的正確敘述。

答案是 (B) 合併排序(merge sort)演算法的時間複雜度是 Θ(nlgn)

0
0