Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- )
- func Merge(l, r []int) []int {
- ret := make([]int, 0, len(l)+len(r))
- for len(l) > 0 || len(r) > 0 {
- if len(l) == 0 {
- return append(ret, r...)
- }
- if len(r) == 0 {
- return append(ret, l...)
- }
- if l[0] <= r[0] {
- ret = append(ret, l[0])
- l = l[1:]
- } else {
- ret = append(ret, r[0])
- r = r[1:]
- }
- }
- return ret
- }
- func MergeSort(s []int) []int {
- if len(s) <= 1 {
- return s
- }
- n := len(s) / 2
- l := MergeSort(s[:n])
- r := MergeSort(s[n:])
- return Merge(l, r)
- }
- func main() {
- s := []int{2,3,1,4}
- fmt.Printf("%v\n%v\n", s, MergeSort(s))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement