- Notifications
You must be signed in to change notification settings - Fork 46.7k
/
Copy pathstooge_sort.py
39 lines (29 loc) · 1 KB
/
stooge_sort.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
defstooge_sort(arr: list[int]) ->list[int]:
"""
Examples:
>>> stooge_sort([18.1, 0, -7.1, -1, 2, 2])
[-7.1, -1, 0, 2, 2, 18.1]
>>> stooge_sort([])
[]
"""
stooge(arr, 0, len(arr) -1)
returnarr
defstooge(arr: list[int], i: int, h: int) ->None:
ifi>=h:
return
# If first element is smaller than the last then swap them
ifarr[i] >arr[h]:
arr[i], arr[h] =arr[h], arr[i]
# If there are more than 2 elements in the array
ifh-i+1>2:
t= (int)((h-i+1) /3)
# Recursively sort first 2/3 elements
stooge(arr, i, (h-t))
# Recursively sort last 2/3 elements
stooge(arr, i+t, (h))
# Recursively sort first 2/3 elements
stooge(arr, i, (h-t))
if__name__=="__main__":
user_input=input("Enter numbers separated by a comma:\n").strip()
unsorted= [int(item) foriteminuser_input.split(",")]
print(stooge_sort(unsorted))