mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-01-19 00:37:02 +00:00
quicksort_3_partition
This commit is contained in:
parent
2e74c8edf0
commit
ca7eb46756
33
sorts/quick_sort_3partition.py
Normal file
33
sorts/quick_sort_3partition.py
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
def quick_sort_3partition(sorting, left, right):
|
||||||
|
|
||||||
|
if right <= left:
|
||||||
|
return
|
||||||
|
a = left
|
||||||
|
b = right
|
||||||
|
pivot = sorting[left]
|
||||||
|
i = left
|
||||||
|
while i <= b:
|
||||||
|
if sorting[i] < pivot:
|
||||||
|
sorting[a], sorting[i] = sorting[i], sorting[a]
|
||||||
|
a += 1
|
||||||
|
i += 1
|
||||||
|
elif sorting[i] > pivot:
|
||||||
|
sorting[b], sorting[i] = sorting[i], sorting[b]
|
||||||
|
b -= 1
|
||||||
|
else:
|
||||||
|
i += 1
|
||||||
|
quick_sort_3partition(sorting, left, a - 1)
|
||||||
|
quick_sort_3partition(sorting, b + 1, right)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
raw_input # Python 2
|
||||||
|
except NameError:
|
||||||
|
raw_input = input # Python 3
|
||||||
|
|
||||||
|
user_input = raw_input('Enter numbers separated by a comma:\n').strip()
|
||||||
|
unsorted = [ int(item) for item in user_input.split(',') ]
|
||||||
|
quick_sort_3partition(unsorted,0,len(unsorted)-1)
|
||||||
|
print(unsorted)
|
Loading…
Reference in New Issue
Block a user