blog icon indicating copy to clipboard operation
blog copied to clipboard

排序算法

Open wuxianqiang opened this issue 3 years ago • 0 comments

function swap (arr, a, b) {
  let temp = arr[a]
  arr[a] = arr[b]
  arr[b] = temp
}

function bubbleSort (arr) {
  for (let outer = arr.length; outer >= 2; outer--) {
    for (let innner = 0; innner <= outer - 1; innner++) {
      if (arr[innner] > arr[innner + 1]) {
        swap(arr, innner, innner + 1)
      }
    }
  }
  return arr
}

function selectSort (arr) {
  let min;
  for (let outer = 0; outer <= arr.length - 2; outer++) {
    min = outer
    for (let inner = outer + 1; inner <= arr.length - 1; inner++) {
      if (arr[min] > arr[inner]) {
        swap(arr, min, inner)
      }
    }
  }
  return arr
}

function insertSort (arr) {
  let inner;
  let temp;
  for (let outer = 1; outer < arr.length; outer++) {
    inner = outer;
    temp = arr[outer]
    while (inner > 0 && arr[inner - 1] > temp) {
      arr[inner] = arr[inner - 1]
      inner--
    }
    arr[inner] = temp
  }
  return arr
}

function quickSort (arr) {
  if (arr.length === 0) {
    return []
  }
  let left = []
  let right = []
  let point = arr[0]
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < point) {
      left.push(arr[i])
    } else {
      right.push(arr[i])
    }
  }
  return quickSort(left).concat(point, quickSort(right))
}

console.log(bubbleSort([5, 4, 3, 2, 1]))
console.log(selectSort([5, 4, 3, 2, 1]))
console.log(insertSort([5, 4, 3, 2, 1]))
console.log(quickSort([5, 4, 3, 2, 1]))

wuxianqiang avatar Jul 24 '21 03:07 wuxianqiang