Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.58 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. )
  6.  
  7. func Merge(l, r []int) []int {
  8. ret := make([]int, 0, len(l)+len(r))
  9. for len(l) > 0 || len(r) > 0 {
  10. if len(l) == 0 {
  11. return append(ret, r...)
  12. }
  13. if len(r) == 0 {
  14. return append(ret, l...)
  15. }
  16. if l[0] <= r[0] {
  17. ret = append(ret, l[0])
  18. l = l[1:]
  19. } else {
  20. ret = append(ret, r[0])
  21. r = r[1:]
  22. }
  23. }
  24. return ret
  25. }
  26.  
  27. func MergeSort(s []int) []int {
  28. if len(s) <= 1 {
  29. return s
  30. }
  31. n := len(s) / 2
  32. l := MergeSort(s[:n])
  33. r := MergeSort(s[n:])
  34. return Merge(l, r)
  35. }
  36.  
  37. func main() {
  38. s := []int{2,3,1,4}
  39. fmt.Printf("%v\n%v\n", s, MergeSort(s))
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement