核心思想:在当前参加排序的序列中任意选择一个元素,把小于等于分界元素的所有元素都移到分界元素的前边,把大于等于分界元素的所有元素都移到分界元素的后边,这样,分界元素正好处在排序的最终位置上,并且把当前参加排序的序列划分成前后两个子序列。然后,分别对这两个子序列递归地进行上述过程,直到使得所有元素都到达整个排序后它们应处的位置上。
var arr1 = [38,49,65,97,76,13,27,49];
function swap(arr,x,y) { var temp ; temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } var quick= function(arr,s,t){ var i, j,temp; if(s<t){ i=s; j=t+1; while(1){ do { i++; }while(!(arr[s]<=arr[i]||i==t)); do { j--; }while(!(arr[s]>=arr[j]||j==s)); if(i<j){ swap(arr,i,j); }else{ break; } } swap(arr,s,j); quick(arr,s,j-1); quick(arr,j+1,t); } } var quickSort = function(arr){ var n = arr.length; quick(arr,0,n-1); }
quickSort(arr1);
console.log(arr1);
算法分析:快速排序的时间复杂度是O(n2),不稳定排序