例题1.5 快速排序
题目
输入数组为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)

浙公网安备 33010602011771号