快速排序

  1. public class QuickSort {
  2. public static int partition(int[] arr, int l, int r) {
  3. int pivot = arr[l];
  4. int left = l;
  5. while (l < r) {
  6. while (l < r && arr[r] >= pivot)
  7. r--;
  8. while (l < r && arr[l] <= pivot)
  9. l++;
  10. if (l < r) {
  11. int t = arr[l];
  12. arr[l] = arr[r];
  13. arr[r] = t;
  14. }
  15. }
  16. arr[left] = arr[l];
  17. arr[l] = pivot;
  18. return l;
  19. }
  20. public static void quick(int[] arr, int l, int r) {
  21. if (l < r) {
  22. int pos = partition(arr, l, r);
  23. quick(arr, l, pos - 1);
  24. quick(arr, pos + 1, r);
  25. }
  26. }
  27. }