mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
parent
61f7f94fde
commit
b6cc37d461
45
divide_and_conquer/mergesort.py
Normal file
45
divide_and_conquer/mergesort.py
Normal file
|
@ -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()
|
Loading…
Reference in New Issue
Block a user