From ca7eb46756f230c2c089f3b83ecaf6c596df4ff0 Mon Sep 17 00:00:00 2001 From: Hyuntae Date: Mon, 28 May 2018 19:19:15 +0900 Subject: [PATCH 1/2] 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 From 31f968f589db99f41bffaf6a255c4bd3211dca95 Mon Sep 17 00:00:00 2001 From: Harshil Date: Mon, 28 May 2018 23:34:21 +0200 Subject: [PATCH 2/2] small change! --- sorts/quick_sort_3partition.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sorts/quick_sort_3partition.py b/sorts/quick_sort_3partition.py index 5e4e080a8..def646cdb 100644 --- a/sorts/quick_sort_3partition.py +++ b/sorts/quick_sort_3partition.py @@ -1,13 +1,11 @@ from __future__ import print_function def quick_sort_3partition(sorting, left, right): - if right <= left: return - a = left + a = i = left b = right pivot = sorting[left] - i = left while i <= b: if sorting[i] < pivot: sorting[a], sorting[i] = sorting[i], sorting[a] @@ -30,4 +28,4 @@ if __name__ == '__main__': 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 + print(unsorted)