Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- def quick_sort(myList, start=None, end=None):
- if start is None:
- start = 0
- end = len(myList)
- if start + 1 >= end:
- return
- pivot_ind = random.randint(start, end-1)
- pivot_val = myList[pivot_ind]
- myList[start], myList[pivot_ind] = myList[pivot_ind], myList[start]
- j = start + 1 # put here elements greater than pivot
- k = start + 1 # put here elements equal to pivot
- for i in range(start+1, end):
- if myList[i] < pivot_val :
- myList[i], myList[j] = myList[j], myList[i]
- j += 1
- if myList[i] == pivot_val :
- myList[i], myList[j] = myList[j], myList[i]
- myList[j], myList[k] = myList[k], myList[j]
- k += 1
- j += 1
- for n in range(start, k):
- myList[n], myList[j-1-(n-start)] = myList[j-1-(n-start)], myList[n]
- quick_sort(myList, start, j -(k-start) )
- quick_sort(myList, j, end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement