标签:
对于一个int数组,请编写一个快速排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
代码:
class QuickSort {
public:
void Qsort(int* A, int l, int r) {
if(l>=r)
return;
else{
int i=l, j=r, x=A[l];
while (i<j){
while(i<j && A[j]>=x) //从右向左找第一个小于x的数
j--;
if(i<j)
A[i]=A[j]; //若此处为 A[i++]=A[j] => 数组越界
while(i<j && A[i]<x) //从左向右找第一个大于等于x的数
i++;
if(i<j)
A[j]=A[i];
}
A[i]=x;
Qsort(A, l, i-1); // 递归调用
Qsort(A, i+1, r);
}
}
int* quickSort(int* A, int n) {
Qsort(A,0,n-1);
return A;
}
};
标签:
原文地址:http://www.cnblogs.com/claremore/p/5499061.html