JS中数组的各类排序算法

220 阅读1分钟

各类排序算法

冒泡排序

比较相邻元素的大小,如果是升序,那么小的排前面,如果是降序,那么大的排前面

    function bubbleSort() {
      let a = [34, 12, 56, 12, 46, 112, 8, 6, 17, 33];
      console.log('初始数组');
      let flag = true;
      for (let i = 0; i < a.length; i++) {
        flag = true;
        for (let j = 0; j < a.length - 1 - i; j++) {
          if (a[j] > a[j + 1]) {
            [a[j], a[j + 1]] = [a[j + 1], a[j]];
            flag = false;
          }
        }
        if (flag) { // 优化,减少循环次数
          break;
        }
        console.log(a);
      }
    }
    // 调用
    bubbleSort();

快速排序

随便找一个元素作为排序的基准值,小于这个值的统统排到作边,大于这个值的统统放到右边

  function quickSort(arr) {
      if (arr.length <= 1) {
        return arr;
      }
      var pivotIndex = Math.floor(arr.length / 2);
      var pivot = arr.splice(pivotIndex, 1)[0]
      var left = [];
      var right = [];
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] < pivot) {
          left.push(arr[i])
        } else {
          right.push(arr[i]);
        }
      }
      return quickSort(left).concat([pivot], quickSort(right));
    }

    arr = [6, 3, 9, 12, 1]
    console.log(quickSort(arr))