Skip to content

Instantly share code, notes, and snippets.

@oludouglas
Created September 15, 2020 12:58
Show Gist options
  • Save oludouglas/ea5bc9748ad98d9f61fe5b10bbd43852 to your computer and use it in GitHub Desktop.
Save oludouglas/ea5bc9748ad98d9f61fe5b10bbd43852 to your computer and use it in GitHub Desktop.
package interviews
//Merge merges the sorted individual entries
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
}
//MergeSort exported
func MergeSort(arr []int) []int {
if len(arr) <= 1 {
return arr
}
n := len(arr) / 2
l := MergeSort(arr[:n])
r := MergeSort(arr[n:])
return Merge(l, r)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment