算法思想见:
快速排序原理
以下为代码实现:
public class QuickSort {
public static void main(String args[]) {
int len = 10;
int arr[] = new int[len];
System.out.println("Before Sort: ");
for (int i = 0; i < len; i++) {
arr[i] = (int) (Math.random() * 10);
System.out.print(arr[i] + " ");
}
System.out.println();
quickSort(arr, 0, arr.length - 1);
System.out.println("After Sort: ");
for (int i : arr) {
System.out.print(i + " ");
}
}
public static void quickSort(int arr[], int left, int right) {
int l, r, temp, pivot;
l = left;
r = right;
pivot = arr[right];
if (l >= r) {
return;
}
while (l < r) {
for (; l < r && arr[l] <= pivot; l++) ; // 需要为 <= 而不是 <
for (; l < r && arr[r] >= pivot; r--) ; // 需要为 >= 而不是 >
if (l < r) {
temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
}
}
arr[right] = arr[l];
arr[l] = pivot;
if (left < l) // 不加此条件判断可能出错
quickSort(arr, left, l - 1);
if (l < right) // 不加此条件判断可能出错
quickSort(arr, l + 1, right);
}
}