1. Bubble Sort
- 最佳時間複雜度:O(n) – 在陣列已經排序的情況下發生。
- 最壞時間複雜度:O(n^2) – 在陣列以反序排序的情況下發生。
- 原地排序:是。
- 穩定性:是。
2. Insertion Sort
- 最佳時間複雜度:O(n) – 在陣列已經排序的情況下發生。
- 最壞時間複雜度:O(n^2) – 在陣列以反序排序的情況下發生。
- 原地排序:是。
- 穩定性:是。
3. Merge Sort
- 最佳時間複雜度:O(n log n)。
- 最壞時間複雜度:O(n log n)。
- 原地排序:否(通常如此,儘管存在原地版本)。
- 穩定性:是。
4. Quick Sort
- 最佳時間複雜度:O(n log n) – 通常透過良好的支點選擇而達成。
- 最壞時間複雜度:O(n^2) – 發生在永遠選擇最小或最大元素作為支點的情況。
- 原地排序:是,但不總是(取決於具體實作)。
- 穩定性:否(通常如此,儘管存在穩定版本)。
5. Radix Sort (基數10)
- 最佳時間複雜度:O(d * (n + b)) – 其中 d 是位數個數,b 是基數(此情況為10)。
- 最壞時間複雜度:O(d * (n + b))。
- 原地排序:否。
- 穩定性:是。
6. Selection Sort
- 最佳時間複雜度:O(n^2)。
- 最壞時間複雜度:O(n^2)。
- 原地排序:是。
- 穩定性:否(通常如此,儘管存在穩定版本)。
降冪排序:序列 50, 46, 37, 28, 19
為了對該序列執行降冪排序並計算每種方法的比較次數,我們需要考慮這些演算法通常是為升序排序設計的。比較次數將保持不變;只是交換條件改變。然而,對於快速排序和基數排序等方法精確計算比較次數比較複雜,因為它們依賴於資料和數位分佈。
對於 Bubble Sort、Insertion Sort 和 Selection Sort,我們可以這樣計算:
- Bubble Sort 和 Insertion Sort:這些演算法在最壞情況下將執行 n(n-1)/2 次比較,其中 n 是元素數量。所以對於 5 個元素,就是 5 * 4 / 2 = 10 次比較。
- Selection Sort:此演算法始終執行 n(n-1)/2 次比較,不論元素順序如何。所以與上面相同,10 次比較。
- Merge Sort:
對於五個元素的數列,合併過程大致如下:
- 將數列分割成單個元素的子數列。
- 將兩個單個元素的數列合併,共需比較 4 次(因為有兩對需要合併)。
- 將兩個兩元素的數列以及一個單個元素的數列合併,共需比較 4 + 2 = 6 次。
- 最後,將一個四元素的數列和一個單個元素的數列合併,最多需要 4 次比較。
因此,總共的比較次數是 4 + 6 + 4 = 14 次。 - Radix Sort: Radix 排序法不是比較排序法,所以排序時比較0次。
点点赞赏,手留余香
给TA打赏
評論0