5
5
6
6
from typing import List
7
7
8
+
8
9
def adaptive_merge_sort (sequence : list ) -> list :
9
10
"""
10
11
>>> adaptive_merge_sort([12, 11, 13, 5, 6, 7])
@@ -23,6 +24,7 @@ def adaptive_merge_sort(sequence: list) -> list:
23
24
adaptive_merge_sort_recursive (sequence , aux , 0 , len (sequence ) - 1 )
24
25
return sequence
25
26
27
+
26
28
def adaptive_merge_sort_recursive (arr : list , aux : list , low : int , high : int ) -> None :
27
29
if high <= low :
28
30
return
@@ -32,11 +34,12 @@ def adaptive_merge_sort_recursive(arr: list, aux: list, low: int, high: int) ->
32
34
adaptive_merge_sort_recursive (aux , arr , mid + 1 , high )
33
35
34
36
if arr [mid ] <= arr [mid + 1 ]:
35
- arr [low : high + 1 ] = aux [low : high + 1 ]
37
+ arr [low : high + 1 ] = aux [low : high + 1 ]
36
38
return
37
39
38
40
merge (arr , aux , low , mid , high )
39
41
42
+
40
43
def merge (arr : list , aux : list , low : int , mid : int , high : int ) -> None :
41
44
i , j = low , mid + 1
42
45
@@ -58,4 +61,9 @@ def merge(arr: list, aux: list, low: int, mid: int, high: int) -> None:
58
61
if __name__ == "__main__" :
59
62
assert adaptive_merge_sort ([12 , 11 , 13 , 5 , 6 , 7 ]) == [5 , 6 , 7 , 11 , 12 , 13 ]
60
63
assert adaptive_merge_sort ([4 , 3 , 2 , 1 ]) == [1 , 2 , 3 , 4 ]
61
- assert adaptive_merge_sort (["apple" , "zebra" , "mango" , "banana" ]) == ['apple' , 'banana' , 'mango' , 'zebra' ]
64
+ assert adaptive_merge_sort (["apple" , "zebra" , "mango" , "banana" ]) == [
65
+ "apple" ,
66
+ "banana" ,
67
+ "mango" ,
68
+ "zebra" ,
69
+ ]
0 commit comments