Skip to content

Commit b6cc37d

Browse files
jpg-130cclauss
authored andcommitted
mergesort added (TheAlgorithms#1313)
* mergesort added * added doctest
1 parent 61f7f94 commit b6cc37d

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

divide_and_conquer/mergesort.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
def merge(a,b,m,e):
2+
l=a[b:m+1]
3+
r=a[m+1:e+1]
4+
k=b
5+
i=0
6+
j=0
7+
while i<len(l) and j<len(r):
8+
#change sign for Descending order
9+
if l[i]<r[j]:
10+
a[k]=l[i]
11+
i+=1
12+
else:
13+
a[k]=r[j]
14+
j+=1
15+
k+=1
16+
while i<len(l):
17+
a[k]=l[i]
18+
i+=1
19+
k+=1
20+
while j<len(r):
21+
a[k]=r[j]
22+
j+=1
23+
k+=1
24+
return a
25+
26+
def mergesort(a,b,e):
27+
"""
28+
>>> mergesort([3,2,1],0,2)
29+
[1, 2, 3]
30+
>>> mergesort([3,2,1,0,1,2,3,5,4],0,8)
31+
[0, 1, 1, 2, 2, 3, 3, 4, 5]
32+
"""
33+
if b<e:
34+
m = (b+e)//2
35+
#print("ms1",a,b,m)
36+
mergesort(a,b,m)
37+
#print("ms2",a,m+1,e)
38+
mergesort(a,m+1,e)
39+
#print("m",a,b,m,e)
40+
merge(a,b,m,e)
41+
return a
42+
43+
if __name__ == "__main__":
44+
import doctest
45+
doctest.testmod()

0 commit comments

Comments
 (0)