// 快速排序,取两个数组分别存放比原数组第一个元素大跟小的元素
function fastSort(array) {
let left = []
let right = []
for (let i = 1; i < array.length; i++) {
if (array[i] > array[0]) right.push(array[i])
else left.push(array[i])
}
// 对两个数组进行递归再次排序直到不需要再排序(空数组或者只有一个元素的数组)
left = sortArr(left)
right = sortArr(right)
// return这两个数组以及原数组第一个元素
return [...left, ...[array[0]],...right]
}
// 数组长达大于1才进行排序否则return原数组
function sortArr(array) {
if (array.length>1)
return fastSort(array)
else return array
}
let arr = [20, 15, 14, 23, 5, 156, 245, 996, 332, 14, 52, 33, 25, 1, 45, 5, 22, 47]
let arr1 = sortArr(arr)
console.log(arr1)
// [1, 5, 5, 14, 14, 15, 20, 22, 23, 25, 33, 45, 47, 52, 156, 245, 332, 996]