排序算法

125 阅读1分钟

快速排序 算法思想:找到数组的中间项,从数组中剔除,对于剩余的元素依次跟中间项比较,小的放右边,大的放在左边。得到的左右两个数组再分别重复以上步骤,以此类推

function quickSort(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  let middleIndex = Math.floor(arr.length / 2);
  let middleValue = arr.splice(middleIndex, 1)[0];

  let leftArr = [];
  let  rightArr = [];
  for (let i = 0;i < arr.length;i++) {
    arr[i] < middleValue ? leftArr.push(arr[i]) : rightArr.push(arr[i]);
  }
  return quickSort(leftArr).concat(middleValue, quickSort(rightArr));
}

冒泡排序 算法思想:将数组中的树两两比较,小的放在左边,大的放在右边。

function bubble(arr) {
  let middle;
  for (let i = 1;i <= arr.length - 1;i++) {
    for (let j = 1;j <= arr.length - i;j++) {
      if (arr[j] > arr[j + 1]) {
        middle = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = middle;
      }
    }
  }
  return arr;
}