-
Notifications
You must be signed in to change notification settings - Fork 501
Expand file tree
/
Copy pathPYTHON quicksort.py
More file actions
42 lines (31 loc) · 787 Bytes
/
PYTHON quicksort.py
File metadata and controls
42 lines (31 loc) · 787 Bytes
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
40
41
42
import os
import sys
import statistics
def quickSort(arr):
# num_list < median
left = []
# num_list > median
right = []
# Recursion stop condition
if len(arr) <= 1:
return arr
# get a median in array
median = int(statistics.median(arr))
# Count the number of medians
medianFlg = 0
for element in arr:
if element < median:
left.append(element)
elif element > median:
right.append(element)
else:
medianFlg += 1
left = quickSort(left)
right = quickSort(right)
return left + [median] * medianFlg + right
if __name__ == "__main__":
num_list = []
for l in sys.stdin:
num_list.append(int(l))
print(num_list)
print(quickSort(num_list))