Java Collections

课本的完整实现

  public class quickSort {
      public void quickSort(int[] nums) {
        StdRandom.Shuffle(a);
        sort(a, 0, nums.length - 1);
        return;
      }

      public sort(int[] nums, int low, int high) {
        if(high <= low)
          return;
        int pivot = partition(nums, low, high);
        sort(nums, low, pivot - 1);
        sort(nums, pivot + 1, high);
        return;
      }

      public int partition(int[] nums, int low, int high) {
        int p1 = low;
        int p2 = high + 1;

        while(true) {
          while(nums[++p1] < nums[low])
            if(p1 == high) break;
          while(nums[--p2] >= nums[low])
            if(p2 == low) break;
          if(p1 >= p2) break;
          swap(nums, p1, p2);


        }
        swap(a, low, p2);
        return p2;
      }
  }