-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMerge Sort.py
75 lines (60 loc) · 1.42 KB
/
Merge 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
"""
-------------------------------- Merge Sort ----------------------------
Sort an array A using Merge Sort.
Change in the input array itself. So no need to return or print anything.
#### Input format :
Line 1 : Integer n i.e. Array size
Line 2 : Array elements (separated by space)
#### Output format :
Array elements in increasing order (separated by space)
#### Constraints :
1 <= n <= 10^3
#### Sample Input 1 :
6
2 6 8 5 4 3
#### Sample Output 1 :
2 3 4 5 6 8
#### Sample Input 2 :
5
2 1 5 2 3
#### Sample Output 2 :
1 2 2 3 5
"""
def mergeSort(arr, start, end):
size=end-start
if size<=1:
return
mid = (start+end)//2
mergeSort(arr, start, mid)
mergeSort(arr, mid, end)
#Merge Two Sorted lists
result = [0] * size
i=start
j=mid
k=0
while(i<mid and j<end):
if(arr[i]<arr[j]):
result[k] = arr[i]
k += 1
i += 1
else:
result[k] = arr[j]
k += 1
j += 1
while(i<mid):
result[k] = arr[i]
k += 1
i += 1
while(j<end):
result[k] = arr[j]
k += 1
j += 1
for i in range(0,size):
arr[start+i] = result[i]
# Main
n=int(input())
arr=list(int(i) for i in input().strip().split(' '))
mergeSort(arr, 0, n)
for num in arr:
print(num, end=' ')
print()