1 Star 1 Fork 0

FightFastest / shareJS

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
排序算法.md 1.72 KB
一键复制 编辑 原始数据 按行查看 历史
tigerHee666 提交于 2019-12-03 14:00 . 排序算法及js代码样式优化

排序算法

冒泡排序

var arr = [1, 5, 9, 3, 2, 6, 8, 4]
var length = arr.length
for (var i = 0; i < length; i++) {
  for (var j = i + 1; j < length; j++) {
    if (arr[i] > arr[j]) {
      ;[arr[i], arr[j]] = [arr[j], arr[i]]
    }
  }
}
console.log('arr === ', arr)

快速排序

找到一个基准点,然后将集合分成两部分,左边的小于基准点,右边的大于基准点

let testArr = [1, 5, 9, 3, 2, 6, 8, 4]
function sortFn(arr) {
  let length = arr.length
  if (length <= 1) {
    return arr
  }
  let sortIndex = parseInt(length / 2)
  let sortItem = arr.splice(sortIndex, 1)[0]
  let leftArr = []
  let rightArr = []
  arr.forEach(item => {
    if (item < sortItem) {
      leftArr.push(item)
    } else {
      rightArr.push(item)
    }
  })
  return [...sortFn(leftArr), ...sortFn([sortItem, ...rightArr])]
}

console.log('arr === ', sortFn(testArr))

选择排序

寻找最小的数,将最小数的索引保存

var arr = [1, 5, 9, 3, 2, 6, 8, 4]
var length = arr.length
var minIndex
for (var i = 0; i < length; i++) {
  minIndex = i
  for (var j = i + 1; j < length; j++) {
    if (arr[j] < arr[minIndex]) {
      minIndex = j
    }
  }
  ;[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]]
}
console.log('arr === ', arr)

插入排序

类似摸扑克牌

var arr = [1, 5, 9, 3, 2, 6, 8, 4]
var length = arr.length
var preIndex, current
for (var i = 1; i < length; i++) {
  preIndex = i - 1
  current = arr[i]
  while (preIndex >= 0 && arr[preIndex] > current) {
    arr[preIndex + 1] = arr[preIndex]
    preIndex--
  }
  arr[preIndex + 1] = current
}
console.log('arr === ', arr)

二分插入排序

希尔排序

归并排序

堆排序

1
https://gitee.com/fightfastest/shareJS.git
git@gitee.com:fightfastest/shareJS.git
fightfastest
shareJS
shareJS
master

搜索帮助