题目
输入数组为a[p:r],通过排序算法使其有序。
思路
(1)划分,取出x=a[p]为基准将a[p:r]划分为3:a[p:q-1],a[q],a[q+1:r],使a[p:q-1]中任一元素<=a[q], a[q]<=a[q+1:r]
(2)递归调用 ,对a[p:q-1]和a[q+1:r]进行同样的操作
function swap(a,i,j){ var temp=a[i] a[i]=a[j] a[j]=temp } var a=[10,2,32,4,5,6,7,8,5,9,4,3,12,12] function partition(a,p,r){ var i=p var j= r+1 var x=a[p] while(true){ while(a[++i]<x); while(a[--j]>x); if(i>=j){ break } swap(a,i,j) } swap(a,p,j) return j } function quickSort(a,p,r){ if(p<r){ var q=partition(a,p,r) quickSort(a,p,q-1) quickSort(a,q+1,r) } } quickSort(a,0, a.length-1) console.log(a)