From 9b9a96e92cf801b479bd2865732bbe978e4c63f7 Mon Sep 17 00:00:00 2001 From: Nikita2106-05 Date: Fri, 9 Jan 2026 20:04:01 +0530 Subject: [PATCH] Create merge_sort.py --- maths/merge_sort.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 maths/merge_sort.py diff --git a/maths/merge_sort.py b/maths/merge_sort.py new file mode 100644 index 000000000000..62ddf0dbbe00 --- /dev/null +++ b/maths/merge_sort.py @@ -0,0 +1,37 @@ +""" +Merge Sort Algorithm +Time Complexity: O(n log n) +Space Complexity: O(n) +""" + +def merge_sort(arr): + 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, right): + result = [] + i = j = 0 + + while i < len(left) and j < len(right): + if left[i] <= right[j]: + result.append(left[i]) + i += 1 + else: + result.append(right[j]) + j += 1 + + result.extend(left[i:]) + result.extend(right[j:]) + return result + + +if __name__ == "__main__": + arr = [38, 27, 43, 3, 9, 82, 10] + print("Sorted array:", merge_sort(arr))