Quick Sort
- ave time complexity
O(nlogn) - worst case
O(n^2) - in-place
- better choice!
def quickSort(A, start, end):
if start >= end:
return
pIndex = partition(A, start, end)
quickSort(A, start, pIndex-1)
quickSort(A, pIndex+1, end)
def partition(A, start, end):
pivot = A[end] # pick last one as pivot
pIndex = start
for i in range(start, end): # till end - 1
if A[i] < pivot:
A[i], A[pIndex] = A[pIndex], A[i]
pIndex += 1
A[pIndex], A[end] = A[end], A[pIndex] # get pivot here
return pIndex