js数组排序

  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);
posted @ 2024-08-18 12:22  大豆F4  阅读(5)  评论(0编辑  收藏  举报