js陣列排序

大豆F4發表於2024-08-18
  1. 快速排序:每次迴圈使用陣列中間位置的值按照大小,將陣列分成左右兩個部分,使用遞迴,分別對左右兩個部分執行分割操作
     1 // 快速排序
     2 function quickSort(arr) {
     3     if (arr.length <= 1) {
     4         return arr;
     5     }
     6     const midIndex = Math.floor(arr.length / 2);
     7     const midValue = arr.splice(midIndex, 1)[0];
     8     const left = [];
     9     const right = [];
    10     for (const item of arr) {
    11         if(item < midValue) {
    12             left.push(item);
    13         } else {
    14             right.push(item);
    15         }
    16     }
    17     return quickSort(left).concat([midValue], quickSort(right));
    18 }
    19 
    20 // 測試程式碼
    21 const arr = [1,4,3,25,6,9,8]
    22 const result = quickSort(arr);
    23 console.log("result:", result);
  2. 氣泡排序:迴圈長度為n的陣列,每迴圈一次將陣列中第n-1大的陣列放入陣列中正確的位置。
    // 氣泡排序
    function bubbleSort(arr) {
        if (Array.isArray(arr) && arr.length === 0) return arr;
        for (let index = 0; index < arr.length - 1; index++) {
            for (let inner = 1; inner < arr.length - 1 - index; inner++) {
                if (arr[inner] > arr[inner + 1]) {
                    [arr[inner], arr[inner + 1]] = [arr[inner + 1], arr[inner]]
                }
            }
        }
        return arr;
    }
    
    // 測試程式碼
    const bubble = [1, 4, 3, 25, 6, 9, 8]
    const bubbleResult = bubbleSort(arr);
    console.log("bubbleResult:", bubbleResult);

相關文章