//冒泡bubble
function bubbleSort(arr) {
  let l = arr.length;
  for (let i = 0; i < l; i++) {
    for (let j = 0; j < l - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
      }
    }
  }
  return arr;
}

//插入insert
function insertSort(arr) {
  let l = arr.length;
  for (let i = 1; i < l; i++) {
    let temp = arr[i], j = i;
    while (temp < arr[j - 1] && j > 0) {
      arr[j] = arr[j - 1];
      j--;
    }
    if (i !== j)
      arr[j] = temp;
  }
  return arr;
}
//选择select
function seletSort(arr) {
  let l = arr.length;
  for (let i = 0; i < l; i++) {
    let minIndex = i;
    for (let j = i; j < l; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    if (minIndex !== i) {
      [arr[minIndex], arr[i]] = [arr[i], arr[minIndex]]
    }
  }
  return arr;
}
//归并merge
function mergeSort(arr) {
  let l = arr.length;
  if (l <= 1) {
    return arr;
  }
  let mid = Math.floor(l / 2),
    leftArr = arr.slice(0, mid),
    rightArr = arr.slice(mid, l);
  return merge(mergeSort(leftArr), mergeSort(rightArr));
}
function merge(leftArr, rightArr) {
  let i = 0, j = 0, ll = leftArr.length, rl = rightArr.length, res = [];
  while (i < ll && j < rl) {
    if (leftArr[i] < rightArr[j]) {
      res.push(leftArr[i]);
      i++;
    } else {
      res.push(rightArr[j])
      j++;
    }
  }
  if (i < ll) {
    res.push(...leftArr.slice(i, ll));
  }
  if (j < rl) {
    res.push(...rightArr.slice(j, rl));
  }
  return res;
}
//快速 quick
function quickSort(arr) {
  return quick(arr, 0, arr.length - 1)
}
function quick(arr, left, right) {
  if (right > left) {
    let index = partition(arr, left, right);
    if (left < index - 1) {
      quick(arr, left, index - 1)
    }
    if (index + 1 < right) {
      quick(arr, index + 1, right)
    }
  }
  return arr;
}
function partition(arr, left, right) {
  let mid = Math.floor((left + right) / 2), i = left, j = right;
  while (i < j) {
    while (arr[i] < arr[mid]) {
      i++;
    }
    while (arr[j] > arr[mid]) {
      j--;
    }
    if (i < j) {
      [arr[i], arr[j]] = [arr[j], arr[i]]
    }
  }
  return i;
}

相关文章:

  • 2022-12-23
  • 2019-07-29
  • 2021-12-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-20
  • 2021-11-20
猜你喜欢
  • 2021-08-18
  • 2021-07-19
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2021-07-08
  • 2021-06-17
相关资源
相似解决方案