Merge pull request #2 from theycallmemac/patch-2

Create MergeSort.go
This commit is contained in:
Praveen 2017-08-08 13:44:15 +05:30 коммит произвёл GitHub
Родитель a87e7f4e63 84e9747a7c
Коммит c9be35e696
1 изменённых файлов: 48 добавлений и 0 удалений

48
MergeSort.go Normal file
Просмотреть файл

@ -0,0 +1,48 @@
package main
import "fmt"
func merge(a []int, b []int) []int {
var r = make([]int, len(a) + len(b))
var i = 0
var j = 0
for i < len(a) && j < len(b) {
if a[i] <= b[j] {
r[i+j] = a[i]
i++
} else {
r[i+j] = b[j]
j++
}
}
for i < len(a) { r[i+j] = a[i]; i++ }
for j < len(b) { r[i+j] = b[j]; j++ }
return r
}
func Mergesort(items []int) []int {
if len(items) < 2 {
return items
}
var middle = len(items) / 2
var a = Mergesort(items[:middle])
var b = Mergesort(items[middle:])
return merge(a, b)
}
func main () {
fmt.Print(Mergesort([]int{ 10, 9, 8, 4, 5, 6, 7, 3, 2, 1 }), "\n")
}