Skip to content

Commit cc30d03

Browse files
committed
[Refactor] Mergesort queue uses deques.
1 parent 5dc6ae6 commit cc30d03

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

sorts/mergesort.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from collections import deque
2+
13
def mergesort(list):
24

35
def sort(l):
@@ -9,22 +11,24 @@ def sort(l):
911
right = sort(l[len(l)//2:])
1012

1113
output = merge(left, right)
12-
# print('->' + str(output))
14+
1315
return output
1416

1517
def merge(l1, l2):
16-
# print(l1,l2)
18+
1719
res = []
20+
l1 = deque(l1)
21+
l2 = deque(l2)
1822

1923
while l1 and l2:
2024
if l1[0] < l2[0]:
21-
res.append(l1.pop(0))
25+
res.append(l1.popleft())
2226
else:
23-
res.append(l2.pop(0))
27+
res.append(l2.popleft())
2428
while l1:
25-
res.append(l1.pop(0))
29+
res.append(l1.popleft())
2630
while l2:
27-
res.append(l2.pop(0))
31+
res.append(l2.popleft())
2832
return res
2933

3034
return sort(list)

0 commit comments

Comments
 (0)