通过一趟排序将要排序的数据分割成独立的两部分其中一部分的所有数据都比另外一部分的所有数据小,然后再重复此方法对这两部分数据分别进行快速排序。
整个过程可以使用递归进行。
public class Qsort {
public static void qSort(int[] arr, int l, int r){
if(l
int k = l;
for(int i = l + 1; i <= r; i++){
if(arr[i] < arr[l]){
k++;
swap(arr,i,k);
}
}
swap(arr,k,l);
qSort(arr, l, k-1);
qSort(arr, k+1, r);
}
}
public static void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args){
int[] arr = {9, 8, 7, 13, 21, 1, 17, 6};
System.out.println("排序前:");
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + ",");
}
qSort(arr, 0, arr.length-1);
System.out.println("排序后:");
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + ",");
}
}
}