快速排序是冒泡排序的升级版,不同于冒泡排序每一次循环将最大值放到合适的位置,快速排序的过程是每次的递归循环都将一个元素放到合适的位置,并且不会再进行移动,再快速排序中采用的是分而治之的思想。
//快速排序
function quickSort(array){
return quick(0, array.length - 1)
}
//回调函数
function quick(array, left, right){
let index
if(array.length > 1){
index = media(array, left, right)
if(left < index - 1){
quick(array, left, index - 1)
}
if(index < right){
quick(array, index, right)
}
}
return array
}
//划分过程
media(array,left, right){
let media = array[Math.floor((right + left) / 2)]
let i = left
let j = right
while(i <= j){
while(array[i] < media){
i++
}
while(array[j] > media){
j--
}
if(i <= j){
[array[i], array[j]]=[array[j], array[i]]
i++
j--
}
}
return i
}