Skip to content

Commit 9b9a96e

Browse files
Create merge_sort.py
1 parent 3c88735 commit 9b9a96e

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

maths/merge_sort.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
"""
2+
Merge Sort Algorithm
3+
Time Complexity: O(n log n)
4+
Space Complexity: O(n)
5+
"""
6+
7+
def merge_sort(arr):
8+
if len(arr) <= 1:
9+
return arr
10+
11+
mid = len(arr) // 2
12+
left = merge_sort(arr[:mid])
13+
right = merge_sort(arr[mid:])
14+
15+
return merge(left, right)
16+
17+
18+
def merge(left, right):
19+
result = []
20+
i = j = 0
21+
22+
while i < len(left) and j < len(right):
23+
if left[i] <= right[j]:
24+
result.append(left[i])
25+
i += 1
26+
else:
27+
result.append(right[j])
28+
j += 1
29+
30+
result.extend(left[i:])
31+
result.extend(right[j:])
32+
return result
33+
34+
35+
if __name__ == "__main__":
36+
arr = [38, 27, 43, 3, 9, 82, 10]
37+
print("Sorted array:", merge_sort(arr))

0 commit comments

Comments
 (0)