def partition(arr, low, high):

> i = (low-1) # index of smaller element

> pivot = arr[high] # pivot

> for j in range(low, high):

> > if arr[j] <= pivot:

> > > i = i+1

> > > arr[i], arr[j] = arr[j], arr[i]

> > > arr[i+1], arr[high] = arr[high], arr[i+1]

> > > return (i+1)

def quickSort(arr, low, high):

> if len(arr) == 1:

> > return arr

> if low < high:

> > pi = partition(arr, low, high)

> > quickSort(arr, low, pi-1)

> > quickSort(arr, pi+1, high) 5th EditionDavid A. Patterson, John L. Hennessy220 explanations

3rd EditionCharles E. Leiserson, Clifford Stein, Ronald L. Rivest, Thomas H. Cormen681 explanations

3rd EditionMichael Sipser389 explanations

2nd EditionJohn M Zelle484 explanations