|
1 | 1 | def merge(arr: list[int]) -> list[int]:
|
2 |
| - """Return a sorted array. |
3 |
| - >>> merge([10,9,8,7,6,5,4,3,2,1]) |
4 |
| - [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
5 |
| - >>> merge([1,2,3,4,5,6,7,8,9,10]) |
6 |
| - [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
7 |
| - >>> merge([10,22,1,2,3,9,15,23]) |
8 |
| - [1, 2, 3, 9, 10, 15, 22, 23] |
9 |
| - """ |
10 |
| - if len(arr) > 1: |
11 |
| - middle_length = len(arr) // 2 |
12 |
| - left_array = arr[:middle_length] |
13 |
| - right_array = arr[middle_length:] |
14 |
| - left_size = len(left_array) |
15 |
| - right_size = len(right_array) |
16 |
| - l = merge(left_array) |
17 |
| - r = merge(right_array) |
18 |
| - i = 0 |
19 |
| - j = 0 |
20 |
| - k = 0 |
21 |
| - while i < left_size and j < right_size: |
22 |
| - if left_array[i] < right_array[j]: |
23 |
| - arr[k] = left_array[i] |
24 |
| - i = i + 1 |
25 |
| - else: |
26 |
| - arr[k] = right_array[j] |
27 |
| - j = j + 1 |
28 |
| - k = k + 1 |
29 |
| - while i < left_size: |
30 |
| - arr[k] = left_array[i] |
31 |
| - i = i + 1 |
32 |
| - k = k + 1 |
33 |
| - while j < right_size: |
34 |
| - arr[k] = right_array[j] |
35 |
| - j = j + 1 |
36 |
| - k = k + 1 |
37 |
| - return arr |
| 2 | + """Return a sorted array. |
| 3 | + >>> merge([10,9,8,7,6,5,4,3,2,1]) |
| 4 | + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
| 5 | + >>> merge([1,2,3,4,5,6,7,8,9,10]) |
| 6 | + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
| 7 | + >>> merge([10,22,1,2,3,9,15,23]) |
| 8 | + [1, 2, 3, 9, 10, 15, 22, 23] |
| 9 | + """ |
| 10 | + if len(arr) > 1: |
| 11 | + middle_length = len(arr) // 2 |
| 12 | + left_array = arr[:middle_length] |
| 13 | + right_array = arr[middle_length:] |
| 14 | + left_size = len(left_array) |
| 15 | + right_size = len(right_array) |
| 16 | + l = merge(left_array) |
| 17 | + r = merge(right_array) |
| 18 | + i = 0 |
| 19 | + j = 0 |
| 20 | + k = 0 |
| 21 | + while i < left_size and j < right_size: |
| 22 | + if left_array[i] < right_array[j]: |
| 23 | + arr[k] = left_array[i] |
| 24 | + i = i + 1 |
| 25 | + else: |
| 26 | + arr[k] = right_array[j] |
| 27 | + j = j + 1 |
| 28 | + k = k + 1 |
| 29 | + while i < left_size: |
| 30 | + arr[k] = left_array[i] |
| 31 | + i = i + 1 |
| 32 | + k = k + 1 |
| 33 | + while j < right_size: |
| 34 | + arr[k] = right_array[j] |
| 35 | + j = j + 1 |
| 36 | + k = k + 1 |
| 37 | + return arr |
| 38 | + |
38 | 39 |
|
39 | 40 | if __name__ == "__main__":
|
40 | 41 | import doctest
|
| 42 | + |
41 | 43 | doctest.testmod()
|
0 commit comments