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, len(left)+len(right)) i, j, k := 0, 0, 0

for i < len(left) && j < len(right) {
	if left[i] < right[j] {
		result[k] = left[i]
		i++
	} else {
		result[k] = right[j]
		j++
	}
	k++
}

for i < len(left) {
	result[k] = left[i]
	i++
	k++
}

for j < len(right) {
	result[k] = right[j]
	j++
	k++
}

return result

}

func main() { arr := []int{9, 7, 5, 11, 12, 2, 14, 3, 10, 6} fmt.Println("Before sorting:", arr) sortedArr := mergeSort(arr) fmt.Println("After sorting:", sortedArr) }


以上代码是用go语言实现了归并排序。在mergeSort函数中,我们首先检查数组的长度,如果数组长度小于等于1,则直接返回该数组。接下来,我们找到数组的中间位置,并将数组分为左右两个部分。然后,我们递归地对左右两个部分进行归并排序,最后将排序好的左右两个部分合并成一个有序的结果。merge函数用于合并两个有序数组。我们定义三个指针分别指向左数组、右数组和结果数组的当前位置,然后比较左右两个数组的元素大小,并将较小的元素放入结果数组中,移动相应指针。最后,我们将剩余的元素依次放入结果数组中。在main函数中,我们定义一个待排序的数组,并调用mergeSort函数进行排序,最后输出排序后的结果
用go写一个归并排序

原文地址: https://www.cveoy.top/t/topic/h9Ah 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录