Skip to content

排序算法

算法是我整个学习体系中最薄弱的一环,故决定从头开始好好的学习一下一些基础的算法,就从排序算法开始吧 😋

项目地址:传送门

快速排序

关于快速排序算法

顾名思义,快速排序是的特点就是快!至少相比较于冒泡排序、插入排序、选择排序相比,这个是很快的!所以有必要在第一个复习(学习)它!

排序过程

  • 先取出数组中的一个值,作为基准值。
  • 根据这个基准值 再分为小于基准值的数组 和 大于基准值 的数组
  • 进入递归
  • 当递归的数组小于两个时 跳出递归 将这个数组返回 基线条件
  • 最后将每个数组拼接在一起

image-20220424222859854

代码展示

js
const arr = [11, 2, 4, 3, 6, 87]
/**
 *
 * @param {number[]} arr
 * @returns {number[]}
 */
function quickSort(arr) {
	if (arr.length < 2) {
		return arr
	}
	let pivot = arr[0]
	let less = arr.slice(1).filter(item => item <= pivot)
	let greater = arr.slice(1).filter(item => item > pivot)
	return quickSort(less).concat([pivot]).concat(quickSort(greater))
}
console.log('res', quickSort(arr))
const arr = [11, 2, 4, 3, 6, 87]
/**
 *
 * @param {number[]} arr
 * @returns {number[]}
 */
function quickSort(arr) {
	if (arr.length < 2) {
		return arr
	}
	let pivot = arr[0]
	let less = arr.slice(1).filter(item => item <= pivot)
	let greater = arr.slice(1).filter(item => item > pivot)
	return quickSort(less).concat([pivot]).concat(quickSort(greater))
}
console.log('res', quickSort(arr))