奇偶排序法 (Odd-Even Sort)

分階段比較相鄰元素的並行排序演算法

回到首頁

1. 操作原理

奇偶排序法將排序過程分為奇數階段和偶數階段,交替進行比較和交換,類似於氣泡排序但更適合並行處理。

重點:奇偶排序是一種並行友好的排序方法。
核心流程為:奇數階段比較偶數階段比較交替重複,適合多核心處理器。

2. 時間及空間複雜度

情況 時間複雜度 空間複雜度 說明 難易度
最佳 O(n) O(1) 當陣列已經排序時,只需要一次完整遍歷。 簡單
平均 O(n²) O(1) 需要多個階段的比較和交換操作。 困難
最壞 O(n²) O(1) 在最壞情況下需要多次完整的階段遍歷。 困難
空間 O(1) 只需要一個暫存變數進行元素交換。 簡單
穩定性 不穩定 相同元素的相對順序可能會改變。 中等

3. 互動視覺化

中等
0
步驟
0
比較次數
0
交換次數
準備就緒 - 請載入或產生陣列
未排序
比較中
交換中
已排序

📝 步驟紀錄

4. 偽代碼及實作範例

function oddEvenSort(arr) { let n = arr.length; let sorted = false; while (!sorted) { sorted = true; // 奇數階段:比較奇數索引與偶數索引 for (let i = 1; i < n - 1; i += 2) { if (arr[i] > arr[i + 1]) { // 交換元素 let temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; sorted = false; } } // 偶數階段:比較偶數索引與奇數索引 for (let i = 0; i < n - 1; i += 2) { if (arr[i] > arr[i + 1]) { // 交換元素 let temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; sorted = false; } } } return arr; }