Java Reference
In-Depth Information
12
2 6 4 89 8 10
37
68 45
Element 12 is in italics to indicate that it was just swapped with
37
.
Starting from the left of the array, but beginning with the element after 12, com-
pare each element with
37
until an element greater than
37
is found—then swap
37
and that element. The first element greater than
37
is 89, so
37
and 89 are swapped.
The new array is
12 2 6 4
37
8 10
89
68 45
Starting from the right, but beginning with the element before 89, compare each ele-
ment with
37
until an element less than
37
is found—then swap
37
and that element.
The first element less than
37
is 10, so
37
and 10 are swapped. The new array is
12 2 6 4
10
8
37
89 68 45
Starting from the left, but beginning with the element after 10, compare each element
with
37
until an element greater than
37
is found—then swap
37
and that element.
There are no more elements greater than
37
, so when we compare
37
with itself, we
know that
37
has been placed in its final location in the sorted array. Every value to the
left of
37
is smaller than it, and every value to the right of
37
is larger than it.
Once the partition has been applied on the previous array, there are two unsorted
subarrays. The subarray with values less than 37 contains 12, 2, 6, 4, 10 and 8. The
subarray with values greater than 37 contains 89, 68 and 45. The sort continues recur-
sively, with both subarrays being partitioned in the same manner as the original array.
Based on the preceding discussion, write recursive method
quickSortHelper
to
sort a one-dimensional integer array. The method should receive as arguments a start-
ing index and an ending index on the original array being sorted.