Skip to content

Commit cee57e5

Browse files
committed
Mergesort revised Jan 31 2017
1 parent 12892f7 commit cee57e5

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

Mergesort.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# revised Mergesort. updated 1/31/2017 based on feedback from users.
2+
3+
import sys
4+
5+
def merge_sort(A, first=0, last=len(A)-1):
6+
if first < last:
7+
middle = (first + last)//2
8+
merge_sort(A, first, middle)
9+
merge_sort(A, middle+1, last)
10+
merge(A, first, middle, last)
11+
12+
def merge(A, first, middle, last):
13+
L = A[first:middle+1]
14+
R = A[middle+1:last+1]
15+
L.append(sys.maxsize)
16+
R.append(sys.maxsize)
17+
i = j = 0
18+
19+
for k in range (first, last+1):
20+
if L[i] <= R[j]:
21+
A[k] = L[i]
22+
i += 1
23+
else:
24+
A[k] = R[j]
25+
j += 1
26+
27+
A = [5,9,1,2,4,8,6,3,7]
28+
print(A)
29+
merge_sort(A)
30+
print(A)

0 commit comments

Comments
 (0)