You've already forked devops-exercises
mirror of
https://github.com/bregman-arie/devops-exercises.git
synced 2025-07-09 23:45:42 +02:00
48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
![]() |
#!/usr/bin/env python
|
||
|
|
||
|
import random
|
||
|
from typing import List
|
||
|
|
||
|
|
||
|
def merge_sort(arr: List[int]) -> List[int]:
|
||
|
if len(arr) <= 1:
|
||
|
return arr
|
||
|
mid = len(arr) // 2
|
||
|
left = merge_sort(arr[:mid])
|
||
|
right = merge_sort(arr[mid:])
|
||
|
return merge(left, right)
|
||
|
|
||
|
|
||
|
def merge(left: List[int], right: List[int]) -> List[int]:
|
||
|
merged = []
|
||
|
i = j = 0
|
||
|
while i < len(left) and j < len(right):
|
||
|
if left[i] <= right[j]:
|
||
|
merged.append(left[i])
|
||
|
i += 1
|
||
|
else:
|
||
|
merged.append(right[j])
|
||
|
j += 1
|
||
|
merged.extend(left[i:])
|
||
|
merged.extend(right[j:])
|
||
|
return merged
|
||
|
|
||
|
|
||
|
def generate_random_list(size: int = 10, lower: int = 1, upper: int = 100) -> List[int]:
|
||
|
return [random.randint(lower, upper) for _ in range(size)]
|
||
|
|
||
|
|
||
|
def main():
|
||
|
"""
|
||
|
Executes the merge sort algorithm with a randomly generated list.
|
||
|
Time Complexity: O(n log n)
|
||
|
"""
|
||
|
rand_num_li = generate_random_list()
|
||
|
print(f"Unsorted List: {rand_num_li}")
|
||
|
sorted_list = merge_sort(rand_num_li)
|
||
|
print(f"Sorted List: {sorted_list}")
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|