-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMergeSort.py
More file actions
38 lines (30 loc) · 1.02 KB
/
MergeSort.py
File metadata and controls
38 lines (30 loc) · 1.02 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
def merge_sort(l, left, right):
def merge(l, left, mid, right):
n1 = mid - left + 1
n2 = right - mid
i = 0
j = 0
k = left
# print("OUT OF WHILE:", left, mid, right)
# print("left sub array:", l[:left])
# print("right sub array:", l[mid : right])
left_array = l[:left]
right_array = l[mid: right]
while i < len(left_array) and j < len(right_array):
# print(i, j, i + left, j + left, n1, n2, left, mid, right)
print(left_array, right_array)
if left_array[i] < right_array[j]:
l[k] = right_array[j]
i += 1
else:
l[k] = right_array[j]
j += 1
k += 1
if left < right:
mid = (left + right) // 2
merge_sort(l, left, mid)
merge_sort(l, mid + 1, right)
merge(l, left, mid, right)
l = [45, 78, 12, 49, 11, 6]
merge_sort(l, 0, len(l))
print(*l)