From aafd83b1e54604da6711dcb39ac86ffca973a275 Mon Sep 17 00:00:00 2001 From: Aviral Jain <74827110+Aviral1-jain@users.noreply.github.com> Date: Tue, 14 Oct 2025 18:52:35 +0530 Subject: [PATCH] Create MergeSort.go --- sort/MergeSort.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 sort/MergeSort.go diff --git a/sort/MergeSort.go b/sort/MergeSort.go new file mode 100644 index 000000000..63e130c20 --- /dev/null +++ b/sort/MergeSort.go @@ -0,0 +1,26 @@ + func MergeSort(arr []int) []int { + if len(arr) <= 1 { + return arr + } + mid := len(arr) / 2 + left := MergeSort(arr[:mid]) + right := MergeSort(arr[mid:]) + return merge(left, right) + } + + func merge(left, right []int) []int { + result := make([]int, 0, len(left)+len(right)) + i, j := 0, 0 + for i < len(left) && j < len(right) { + if left[i] < right[j] { + result = append(result, left[i]) + i++ + } else { + result = append(result, right[j]) + j++ + } + } + result = append(result, left[i:]...) + result = append(result, right[j:]...) + return result + }