来一个Java版本的快速排序。
public class QuickSort { public static void main(String[] args) { int[] arr = {5, 2, 4, 7, 1, 8, 3, 4}; printArray(arr); quickSort(arr, 0, arr.length - 1); printArray(arr); } static void quickSort(int[] arr, int i, int j) { if (i < j) { int pos = partition(arr, i, j); printArray(arr); System.out.println("分别排左边和右边"); quickSort(arr, 0, pos - 1); quickSort(arr, pos + 1, j); } } static int partition(int[] arr, int i, int j) { int pivot = arr[j]; System.out.println("基准值:" + pivot); int cursor = i; System.out.println("游标:" + cursor); for (int k = i; k < j; k++) { System.out.println("循环到第[" + k + "]个值"); if (arr[k] <= pivot) { System.out.println("交换位置[" + cursor + "]与[" + k + "]的值"); swap(arr, k, cursor); cursor += 1; } System.out.print("循环完成后:"); printArray(arr); System.out.println("游标:" + cursor); } System.out.println("交换位置[" + cursor + "]与[" + j + "]的值"); swap(arr, j, cursor); System.out.println("游标:" + cursor); return cursor; } static void swap(int[] arr, int i, int j) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } static void printArray(int[] arr) { StringBuilder sb = new StringBuilder(); for (int anArr : arr) { sb.append(anArr).append(" "); } System.out.println(sb.toString().trim()); } } 输出如下:
...