public class Test{
public static void main(String args[]) {
int a[] = {1,1,3,6,2,9,10};
Quick(a,0,a.length-1); //对数组a进行快速排序
for(int i=0;i<a.length;i++) {
System.out.println(a[i]);
}
}
public static void Quick(int a[], int low, int high) {//快速排序算法
// 1.
if(low >= high) return;
//2. 初始化
int i=low,j=high;
int p = a[i]; //基准
//3. 一趟快排
while(i<j) {
while(i<j && a[j]>p) { // 3.1 从后向前查找小于p的元素
j--;
}
if(i<j) a[i++] = a[j];
while(i<j && a[i]<p) { // 3.2 从前向后查找大于p的元素
i++;
}
if(i<j) a[j--] = a[i];
}
//4. 获取基准位置
a[i] = p;
//5. 递归对基准两侧元素快速排序
Quick(a, low, i-1);
Quick(a, i+1, high);
}
}