Skip to content
Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Learn more
Permalink
Browse files

mergesort added (#1313)

* mergesort added

* added doctest
  • Loading branch information...
jpg-130 authored and cclauss committed Oct 9, 2019
1 parent 61f7f94 commit b6cc37d461da2a631fe077d0cf952c5981d2dfdd
Showing with 45 additions and 0 deletions.
  1. +45 −0 divide_and_conquer/mergesort.py
@@ -0,0 +1,45 @@
def merge(a,b,m,e):
l=a[b:m+1]
r=a[m+1:e+1]
k=b
i=0
j=0
while i<len(l) and j<len(r):
#change sign for Descending order
if l[i]<r[j]:
a[k]=l[i]
i+=1
else:
a[k]=r[j]
j+=1
k+=1
while i<len(l):
a[k]=l[i]
i+=1
k+=1
while j<len(r):
a[k]=r[j]
j+=1
k+=1
return a

def mergesort(a,b,e):
"""
>>> mergesort([3,2,1],0,2)
[1, 2, 3]
>>> mergesort([3,2,1,0,1,2,3,5,4],0,8)
[0, 1, 1, 2, 2, 3, 3, 4, 5]
"""
if b<e:
m = (b+e)//2
#print("ms1",a,b,m)
mergesort(a,b,m)
#print("ms2",a,m+1,e)
mergesort(a,m+1,e)
#print("m",a,b,m,e)
merge(a,b,m,e)
return a

if __name__ == "__main__":
import doctest
doctest.testmod()

0 comments on commit b6cc37d

Please sign in to comment.
You can’t perform that action at this time.