冒泡排序算法:原理與實現
冒泡排序(Bubble Sort)是一種簡單的排序算法,它重復地遍歷要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。遍歷數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經過交換慢慢“浮”到數列的頂端,越大的元素會“沉”到數列的尾端。
冒泡排序算法的原理
冒泡排序算法的基本思想是通過不斷地交換相鄰的逆序對(即較大的元素在前,較小的元素在后),直到沒有逆序對為止。在每一輪遍歷過程中,最大的元素會像氣泡一樣“冒”到數列的尾端。經過n-1輪遍歷后,整個數列就被排序好了。
冒泡排序算法的實現
以下是使用JavaScript實現的冒泡排序算法示例:
function bubbleSort(arr) {const n = arr.length;let swapped; // 標記是否交互for (let i = 0; i < n - 1; i++) {swapped = false;for (let j = 0; j < n - 1 - i; j++) {if (arr[j] > arr[j + 1]) {// 交換元素[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];swapped = true;}}// 如果在這一輪遍歷中沒有發生交換,說明數列已經排序完成if (!swapped) {break;}}return arr;
}// 示例
const arr = [64, 34, 25, 12, 22, 11, 90];
console.log(bubbleSort(arr)); // 輸出:[11, 12, 22, 25, 34, 64, 90]
在這個實現中,我們使用了兩層循環。外層循環負責控制遍歷的輪數,內層循環負責比較相鄰的元素并進行交換。我們還使用了一個swapped
變量來跟蹤在當前輪遍歷中是否發生了交換。如果沒有發生交換,說明數列已經排序完成,可以提前結束遍歷。
需要注意的是,冒泡排序算法的時間復雜度為O(n^2),在處理大規模數據時效率較低。在實際應用中,更高效的排序算法(如快速排序、歸并排序等)通常會被優先考慮。