File tree Expand file tree Collapse file tree 2 files changed +64
-0
lines changed Expand file tree Collapse file tree 2 files changed +64
-0
lines changed Original file line number Diff line number Diff line change
1
+ package sorting
2
+
3
+ func Merge (left []int , right []int ) []int {
4
+
5
+ mergedArray := make ([]int , 0 , len (left )+ len (right ))
6
+
7
+ for len (left ) > 0 || len (right ) > 0 {
8
+ if len (left ) == 0 {
9
+ return append (mergedArray , right ... )
10
+ }
11
+
12
+ if len (right ) == 0 {
13
+ return append (mergedArray , left ... )
14
+ }
15
+
16
+ if left [0 ] <= right [0 ] {
17
+ mergedArray = append (mergedArray , left [0 ])
18
+ left = left [1 :]
19
+ } else {
20
+ mergedArray = append (mergedArray , right [0 ])
21
+ right = right [1 :]
22
+ }
23
+ }
24
+
25
+ return mergedArray
26
+ }
27
+
28
+ func MergeSort (array []int ) []int {
29
+
30
+ if len (array ) <= 1 {
31
+ return array
32
+ }
33
+
34
+ middle := len (array ) / 2
35
+
36
+ left := MergeSort (array [:middle ])
37
+ right := MergeSort (array [middle :])
38
+
39
+ return Merge (left , right )
40
+ }
Original file line number Diff line number Diff line change
1
+ package sorting
2
+
3
+ import (
4
+ "fmt"
5
+ "github.com/gowthamgts/go-algorithms"
6
+ "testing"
7
+ )
8
+
9
+ func TestMergeSort (t * testing.T ) {
10
+ randomArray := utils .GetRandomArray (10 )
11
+ fmt .Println ("Sorting Random Array: " , randomArray )
12
+
13
+ sortedArray := MergeSort (randomArray )
14
+ fmt .Println ("Sorted Array: " , sortedArray )
15
+
16
+ properlySorted := utils .VerifySortedSet (sortedArray )
17
+
18
+ if properlySorted {
19
+ fmt .Println ("Sorting Verified!" )
20
+ } else {
21
+ t .Error ("Sorting Verification Failed" )
22
+ }
23
+ }
24
+
You can’t perform that action at this time.
0 commit comments