From ca7eb46756f230c2c089f3b83ecaf6c596df4ff0 Mon Sep 17 00:00:00 2001 From: Hyuntae Date: Mon, 28 May 2018 19:19:15 +0900 Subject: [PATCH] quicksort_3_partition --- sorts/quick_sort_3partition.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 sorts/quick_sort_3partition.py diff --git a/sorts/quick_sort_3partition.py b/sorts/quick_sort_3partition.py new file mode 100644 index 000000000..5e4e080a8 --- /dev/null +++ b/sorts/quick_sort_3partition.py @@ -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) \ No newline at end of file