排序算法1——快排

2021-08-09  本文已影响0人  CokeCode
public class Solution {

  public void qSort(int[] nums) {
    if (nums == null || nums.length <= 1) {
      return;
    }
    qSort(nums, 0, nums.length - 1);
  }

  private void qSort(int[] a, int l, int r) {
    int pivot;
    if (l < r) {
      pivot = partition(a, l, r);
      qSort(a, l, pivot - 1);
      qSort(a, pivot + 1, r);
    }
  }

  private int partition(int[] a, int l, int r) {
    int pivot = a[l];
    while(l < r) {
      while (l < r && a[r] >= pivot) {
        --r;
      }
      if (l < r) {
        a[l++] = a[r];
      }
      while (l < r && a[l] <= pivot) {
        ++l;
      }
      if (l < r) {
        a[r--] = a[l];
      }
    }
    a[l] = pivot;
    return l;
  }

}

上一篇 下一篇

猜你喜欢

热点阅读