test_class.declarator: tester = new Quick<Integer>()
test_class.original_string: Quick<Integer> tester = new Quick<Integer>();
test_class.type: Quick<Integer>
test_class.var_name: tester
test_class.file: clrs/07_quicksort/src/QuickTest.java
test_class.identifier: QuickTest
test_case.body: @Test
  	public void testRandomizedQuicksort() {
  		List<Integer> input = Arrays.asList(7, 3, 1, 0, 2, 9, 10, 1);
  		List<Integer> expectedOutput = Arrays.asList(0, 1, 1, 2, 3, 7, 9, 10);
  		for (int i = 0; i < 10; i++) {
  			tester.quicksort(input, 0, input.size() - 1);
  			assertArrayEquals(expectedOutput.toArray(), input.toArray());
  		}
  	}
test_case.class_method_signature: QuickTest.testRandomizedQuicksort()
test_case.full_signature: @Test public void testRandomizedQuicksort()
test_case.identifier: testRandomizedQuicksort
test_case.invocations: asList asList quicksort size assertArrayEquals toArray toArray
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testRandomizedQuicksort()
focal_class.declarator: generator
focal_class.original_string: Random generator;
focal_class.type: Random
focal_class.var_name: generator
focal_class.file: clrs/07_quicksort/src/Quick.java
focal_class.identifier: Quick
focal_class.class_method_signature: Quick.Quick()
focal_class.full_signature:   Quick()
focal_class.identifier: Quick
focal_class.parameters: ()
focal_class.signature:  Quick()
focal_class.class_method_signature: Quick.Quick(Random generator)
focal_class.full_signature:   Quick(Random generator)
focal_class.identifier: Quick
focal_class.parameters: (Random generator)
focal_class.signature:  Quick(Random generator)
focal_class.class_method_signature: Quick.sort(List<T> A)
focal_class.full_signature: static void sort(List<T> A)
focal_class.identifier: sort
focal_class.modifiers: static
focal_class.parameters: (List<T> A)
focal_class.return: void
focal_class.signature: void sort(List<T> A)
focal_class.class_method_signature: Quick.randomizedSort(List<T> A)
focal_class.full_signature: static void randomizedSort(List<T> A)
focal_class.identifier: randomizedSort
focal_class.modifiers: static
focal_class.parameters: (List<T> A)
focal_class.return: void
focal_class.signature: void randomizedSort(List<T> A)
focal_class.class_method_signature: Quick.partition(List<T> A, int p, int r)
focal_class.full_signature: public int partition(List<T> A, int p, int r)
focal_class.identifier: partition
focal_class.modifiers: public
focal_class.parameters: (List<T> A, int p, int r)
focal_class.return: int
focal_class.signature: int partition(List<T> A, int p, int r)
focal_class.class_method_signature: Quick.randomizedPartition(List<T> A, int p, int r)
focal_class.full_signature: public int randomizedPartition(List<T> A, int p, int r)
focal_class.identifier: randomizedPartition
focal_class.modifiers: public
focal_class.parameters: (List<T> A, int p, int r)
focal_class.return: int
focal_class.signature: int randomizedPartition(List<T> A, int p, int r)
focal_class.class_method_signature: Quick.randomizedQuicksort(List<T> A, int p, int r)
focal_class.full_signature: public void randomizedQuicksort(List<T> A, int p, int r)
focal_class.identifier: randomizedQuicksort
focal_class.modifiers: public
focal_class.parameters: (List<T> A, int p, int r)
focal_class.return: void
focal_class.signature: void randomizedQuicksort(List<T> A, int p, int r)
focal_class.class_method_signature: Quick.quicksort(List<T> A, int p, int r)
focal_class.full_signature: public void quicksort(List<T> A, int p, int r)
focal_class.identifier: quicksort
focal_class.modifiers: public
focal_class.parameters: (List<T> A, int p, int r)
focal_class.return: void
focal_class.signature: void quicksort(List<T> A, int p, int r)
focal_class.class_method_signature: Quick.exchange(List<T> A, int i, int j)
focal_class.full_signature: private void exchange(List<T> A, int i, int j)
focal_class.identifier: exchange
focal_class.modifiers: private
focal_class.parameters: (List<T> A, int i, int j)
focal_class.return: void
focal_class.signature: void exchange(List<T> A, int i, int j)
focal_method.body: public void randomizedQuicksort(List<T> A, int p, int r) { 
  		if (p < r) {
  			int q = randomizedPartition(A, p, r);
  			randomizedQuicksort(A, p, q - 1);
  			randomizedQuicksort(A, q + 1, r);
  		}
  	}
focal_method.class_method_signature: Quick.randomizedQuicksort(List<T> A, int p, int r)
focal_method.full_signature: public void randomizedQuicksort(List<T> A, int p, int r)
focal_method.identifier: randomizedQuicksort
focal_method.invocations: randomizedPartition randomizedQuicksort randomizedQuicksort
focal_method.modifiers: public
focal_method.parameters: (List<T> A, int p, int r)
focal_method.return: void
focal_method.signature: void randomizedQuicksort(List<T> A, int p, int r)