基本思想:找一个元素为比较的“基准元素”。将比该基准元素大的放在右边,比该基准元素小的放在左边。递归完成所有的排序。
下面来看一下代码实现:
function quickSort(arr,left,right){
if(left < right){
var k = partition(arr,left,right);
quickSort(arr,left,k-1);
quickSort(arr,k+1,right);
}
return arr;
}
function partition(arr,left,right){
var key = arr[right],
i = left - 1,
t;
for(var j = left; j<=right;j++){
if(arr[j] < key){
i++;
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
t = arr[i+1];
arr[i+1] = arr[right];
arr[right] = t;
return i+1;
}
var arr = [2,5,1,3,6,8,7,9],
len = arr.length;
console.log(quickSort(arr,0,len - 1));
时间复杂度: 最坏情况O(n*n),最好情况O(nlogn),平均情况O(nlogn);
空间复杂度:O(logn);
稳定性:不稳定;