首页 > 代码库 > 快速排序

快速排序

核心思想:在当前参加排序的序列中任意选择一个元素,把小于等于分界元素的所有元素都移到分界元素的前边,把大于等于分界元素的所有元素都移到分界元素的后边,这样,分界元素正好处在排序的最终位置上,并且把当前参加排序的序列划分成前后两个子序列。然后,分别对这两个子序列递归地进行上述过程,直到使得所有元素都到达整个排序后它们应处的位置上。

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),不稳定排序

快速排序