1
0
mirror of https://github.com/bregman-arie/devops-exercises.git synced 2025-07-09 23:45:42 +02:00

Implemented recursive merge sort algorithm with O(n log n) time complexity. (#10553)

This commit is contained in:
Adam Djellouli
2025-03-26 21:20:09 -01:00
committed by GitHub
parent 51f7b8948f
commit 692a680ccb

View File

@ -0,0 +1,47 @@
#!/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()