function quickSort (array) {
let sort = (arr, left = 0, right = array.length - 1) => {
if(left >= right) { //如果left >= right,排序完成
return
}
else {
let i = left,j = right
const base = arr[j]
while (i < j) { //把所有比基准值小的数放在左边大的数放在右边
while (i < j && arr[i] <= base) { //找到一个比基准值大的数交换
i++
}
arr[j] = arr[i]
while(j > i && arr[j] >= base) { // 将较大的值放在右边如果没有比基准值大的数就是将自己赋值给自己(i 等于 j)
j--
}
arr[i] = arr[j]
}
arr[j] = base // 将基准值放至中央位置完成一次循环(这时候 j 等于 i )
sort(arr,left,j-1) // 将左边的无序数组重复上面的操作
sort(arr,j+1,right) // 将右边的无序数组重复上面的操作
}
}
const newArr = array.concat() // 为了保证这个函数是纯函数拷贝一次数组
sort(newArr)
return newArr
}
var arr = [3,42,54,2,1]
quickSort([3,42,54,2,1]);