Skip to content

Instantly share code, notes, and snippets.

@tmessinis
Created April 23, 2017 16:43
Show Gist options
  • Save tmessinis/42907a184beb9780b24a6e9f0f415dc6 to your computer and use it in GitHub Desktop.
Save tmessinis/42907a184beb9780b24a6e9f0f415dc6 to your computer and use it in GitHub Desktop.
Python recursive quicksort
import random
test_list = [random.randint(0,100) for num in range(random.randint(10,50))]
#test_list = [1,1,1]
def quick_sort_v2(a_list):
if len(a_list) == 2:
if a_list[0] > a_list[1]:
return [a_list[1], a_list[0]]
else:
return a_list
else:
pivot_val = a_list[0]
left_list = []
right_list = []
equal_list = []
for idx in range(len(a_list)):
if a_list[idx] == pivot_val:
equal_list.append(a_list[idx])
elif a_list[idx] < pivot_val:
left_list.append(a_list[idx])
else:
right_list.append(a_list[idx])
if len(left_list) > 1:
left_list = quick_sort_v2(left_list)
if len(right_list) > 1:
right_list = quick_sort_v2(right_list)
return_list = left_list + equal_list + right_list
return return_list
print(len(test_list))
print(test_list)
sorted_list = quick_sort_v2(test_list)
print(len(sorted_list))
print(sorted_list)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment