Permalink
Please
sign in to comment.
Browse files
mergesort added (#1313)
* mergesort added * added doctest
- Loading branch information...
@@ -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