-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsort.py
More file actions
56 lines (50 loc) · 1.44 KB
/
sort.py
File metadata and controls
56 lines (50 loc) · 1.44 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
def bubble_sort(array):
sorted = False
array_lenght = len(array)
while not sorted:
sorted = True
for i in range(array_lenght - 1):
if array[i] > array[i+1]:
array[i], array[i+1] = array[i+1], array[i]
sorted = False
return array
def counting_sort(array):
contador = [0] * (max(array) + 1)
for element in array:
contador[element] += 1
saida = []
for i in range(len(contador)):
saida.extend([i] * contador[i])
return saida
def merge_sort(array):
size = len(array)
if size < 2:
return array
else:
middle = size // 2
left_part = merge_sort(array[:middle])
right_part = merge_sort(array[middle:])
saida = []
l = 0
r = 0
while l < len(left_part) and r < len(right_part):
if left_part[l] < right_part[r]:
saida.append(left_part[l])
l += 1
else:
saida.append(right_part[r])
r += 1
while l < len(left_part):
saida.append(left_part[l])
l += 1
while r < len(right_part):
saida.append(right_part[r])
r += 1
return saida
# ------------------------------------------- #
list = [7, 2, 5, 1, 9, 3, 0]
print(bubble_sort(list))
list = [7, 2, 5, 1, 9, 3, 0]
print(counting_sort(list))
list = [7, 2, 5, 1, 9, 3, 0]
print(merge_sort(list))