js排序算法

let a = [3,2,4,8,423,455,22,32423,98] // 都来排我

1、冒泡排序

原理:两两对比,大的去右边

function sortBubble (arr) {
  // 要排arr.length轮,每轮排序把当前参与排序的数中最大的数放到最右边,每个下一轮排序的个数都会比上一轮减少一个
  for (let i = 0; i < arr.length; i++) { // 外层控制轮数
    for (let j = 0; j < arr.length - i; j++) { // 内层控制相邻两个数比较
      if (arr[j] > arr[j+1]) {
        let temp = arr[j]
        arr[j] = arr[j+1]
        arr[j+1] = temp
      }
    }
  }
  return arr
}

2、选择排序

原理:依次拿一个数与余下的每个数对比,小的放最前面

function sortChoose (arr) {
  // 依次拿第一个数与后面的每个数对比,最小的放在最前面,之后再从第二个数开始,以此类推
  for (let i = 0; i < arr.length; i++) { // 拿的未排序数组最前面的数
    for (let j = i + 1; j < arr.length; j++) { // 遍历与最前面的数对比的余下数
      if (arr[i] > arr[j]) {
          let temp = arr[i]
          arr[i] = arr[j]
          arr[j] = temp
      }
    }
  }
  return arr
}

3、插入排序

原理:依次把要排序的元素拿到一个新的数组中,每拿来一个元素都把新数组从后向前遍历对比,找到新数组中第一个小于拿来的元素的位置,把拿来的元素插入到第一个小于的元素后面

function sortInsert (arr) {
  let sortArr = [arr[0]]
  for (let i = 1; i < arr.length; i++) {
    sortArr[sortArr.length] = arr[i]
    for (let j = sortArr.length - 1; j >= 0; j--) {
      if (sortArr[j+1] < sortArr[j]) {
        let temp = sortArr[j+1]
        sortArr[j+1] = sortArr[j]
        sortArr[j] = temp
      }
    } 
  }
  return sortArr
}

感觉插入排序包含了冒泡排序

你可能感兴趣的:(js排序算法)