快速排序
- 定义基准值(基本取第一个数)
- 在数组的头和尾定义标识符i、j
- j从右往左遍历,找到小于等于基准值的数
- i从左往右遍历,找到大于等于基准值的数
- if(j==i)则与基准值交换,将数组分割为两部分分别递归,else重复3、4步骤
public class Application { public static void qSort(int[] arr, int head, int tail) { if (head >= tail || arr == null || arr.length <= 1) { return; } int i = head, j = tail, pivot = arr[(head + tail) / 2]; while (i <= j) { while (arr[i] < pivot) { ++i; } while (arr[j] > pivot) { --j; } if (i < j) { int t = arr[i]; arr[i] = arr[j]; arr[j] = t; ++i; --j; } else if (i == j) { ++i; } } qSort(arr, head, j); qSort(arr, i, tail); } public static void main(String[] args) { int[] arr = new int[]{ 1, 4, 8, 2, 55, 3, 4, 8, 6, 4, 0, 11, 34, 90, 23, 54, 77, 9, 2, 9, 4, 10}; qSort(arr, 0, arr.length - 1); String out = ""; for (int digit : arr) { out += (digit + ","); } System.out.println(out); }}复制代码