js快速排序

// 快速排序,取两个数组分别存放比原数组第一个元素大跟小的元素

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]

你可能感兴趣的:(js快速排序)