Skip to content

Commit c9be35e

Browse files
authored
Merge pull request #2 from theycallmemac/patch-2
Create MergeSort.go
2 parents a87e7f4 + 84e9747 commit c9be35e

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

MergeSort.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package main
2+
3+
import "fmt"
4+
5+
func merge(a []int, b []int) []int {
6+
7+
var r = make([]int, len(a) + len(b))
8+
var i = 0
9+
var j = 0
10+
11+
for i < len(a) && j < len(b) {
12+
13+
if a[i] <= b[j] {
14+
r[i+j] = a[i]
15+
i++
16+
} else {
17+
r[i+j] = b[j]
18+
j++
19+
}
20+
21+
}
22+
23+
for i < len(a) { r[i+j] = a[i]; i++ }
24+
for j < len(b) { r[i+j] = b[j]; j++ }
25+
26+
return r
27+
28+
}
29+
30+
func Mergesort(items []int) []int {
31+
32+
if len(items) < 2 {
33+
return items
34+
35+
}
36+
37+
var middle = len(items) / 2
38+
var a = Mergesort(items[:middle])
39+
var b = Mergesort(items[middle:])
40+
return merge(a, b)
41+
42+
}
43+
44+
func main () {
45+
46+
fmt.Print(Mergesort([]int{ 10, 9, 8, 4, 5, 6, 7, 3, 2, 1 }), "\n")
47+
48+
}

0 commit comments

Comments
 (0)