关于原生js实现快速排序
下面粘贴自己写的一段代码(二分法+递归)实现快速排序
function quickSort(array) {
const length = array.length
if (length <= 1) {
return array
}
/*
二分法实现快速排序
1、先获取中间位置的元素
2、遍历遍历去掉中间元素的的剩余元素数组,
3、然后递归比中间位置值大的push到right,小的push到left
4、递归
*/
const index = Math.floor(length / 2)
const base = array.splice(index, 1)
const leftArr = [],
rightArr = []
for (const item of array) {
if (item <= base) {
leftArr.push(item)
} else {
rightArr.push(item)
}
}
return quickSort(leftArr).concat([base], quickSort(rightArr))
}
补充说明原生concat用法:
concat 可用于拼接字符串和数组,此处主要讲解数组拼接的语法格式
定义和用法
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
arrayObject.concat(arrayX,arrayX,......,arrayX)
参数 描述
arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。 返回值 返回一个新的数组。该数组是通过把所有 arrayX
参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。