golang完成归并排序
时间: 2023-09-30 19:09:59 浏览: 52
以下是使用 Golang 实现归并排序的示例代码:
```
package main
import "fmt"
func mergeSort(arr []int) []int {
if len(arr) <= 1 {
return arr
}
middle := len(arr) / 2
left := mergeSort(arr[:middle])
right := mergeSort(arr[middle:])
return merge(left, right)
}
func merge(left, right []int) []int {
result := make([]int, 0)
for len(left) > 0 || len(right) > 0 {
if len(left) == 0 {
return append(result, right...)
}
if len(right) == 0 {
return append(result, left...)
}
if left[0] <= right[0] {
result = append(result, left[0])
left = left[1:]
} else {
result = append(result, right[0])
right = right[1:]
}
}
return result
}
func main() {
arr := []int{5, 3, 4, 6, 2}
fmt.Println("Unsorted array:", arr)
arr = mergeSort(arr)
fmt.Println("Sorted array:", arr)
}
```
在上面的代码中,`mergeSort` 函数是递归实现归并排序的主要函数,它将数组划分为两个子数组,并对这两个子数组递归地调用自身以进行排序。`merge` 函数将两个已排序的子数组合并为一个已排序的数组。最后,在 `main` 函数中,我们调用 `mergeSort` 函数来对给定的未排序的数组进行排序。