Skip to content

Commit 0eaeffb

Browse files
authored
Update adaptive_merge_sort.py
1 parent 723ab7f commit 0eaeffb

File tree

1 file changed

+7
-42
lines changed

1 file changed

+7
-42
lines changed

sorts/adaptive_merge_sort.py

+7-42
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,4 @@
11
def adaptive_merge_sort(sequence: list) -> list:
2-
"""
3-
Sorts a list using the Adaptive Merge Sort algorithm.
4-
5-
>>> adaptive_merge_sort([4, 3, 1, 2])
6-
Initial sequence: [4, 3, 1, 2]
7-
Sorting: array[0:2] and array[2:4]
8-
Sorting: array[0:1] and array[1:2]
9-
Merging: array[0:1] and array[1:2]
10-
After merge: [3, 4]
11-
Sorting: array[2:3] and array[3:4]
12-
Skipping merge as array[2] <= array[3]
13-
Merging: array[0:2] and array[2:4]
14-
After merge: [1, 2, 3, 4]
15-
Sorted sequence: [1, 2, 3, 4]
16-
[1, 2, 3, 4]
17-
"""
182
if len(sequence) < 2:
193
return sequence
204

@@ -26,19 +10,6 @@ def adaptive_merge_sort(sequence: list) -> list:
2610

2711

2812
def adaptive_merge_sort_helper(array: list, aux: list, low: int, high: int) -> None:
29-
"""
30-
Helper function for Adaptive Merge Sort algorithm.
31-
32-
>>> adaptive_merge_sort_helper([4, 3, 1, 2], [4, 3, 1, 2], 0, 3)
33-
Sorting: array[0:2] and array[2:4]
34-
Sorting: array[0:1] and array[1:2]
35-
Merging: array[0:1] and array[1:2]
36-
After merge: [3, 4]
37-
Sorting: array[2:3] and array[3:4]
38-
Skipping merge as array[2] <= array[3]
39-
Merging: array[0:2] and array[2:4]
40-
After merge: [1, 2, 3, 4]
41-
"""
4213
if high <= low:
4314
return
4415

@@ -57,23 +28,17 @@ def adaptive_merge_sort_helper(array: list, aux: list, low: int, high: int) -> N
5728

5829

5930
def merge(array: list, aux: list, low: int, mid: int, high: int) -> None:
60-
"""
61-
Merges two sorted subarrays of the main array.
62-
63-
>>> merge([4, 3, 1, 2], [4, 3, 1, 2], 0, 1, 3)
64-
Merging: array[0:2] and array[2:4]
65-
After merge: [1, 2, 3, 4]
66-
"""
6731
print(f"Merging: array[{low}:{mid + 1}] and array[{mid + 1}:{high + 1}]")
6832

6933
i, j = low, mid + 1
7034
for k in range(low, high + 1):
71-
if i > mid:
72-
aux[k] = array[j]
73-
j += 1
74-
elif j > high:
75-
aux[k] = array[i]
76-
i += 1
35+
if i > mid or j > high:
36+
if i > mid:
37+
aux[k] = array[j]
38+
j += 1
39+
else:
40+
aux[k] = array[i]
41+
i += 1
7742
elif array[i] <= array[j]:
7843
aux[k] = array[i]
7944
i += 1

0 commit comments

Comments
 (0)