我一直在尝试像在Python中那样实现合并排序算法,但由于某种原因结果不正确。
例如,对于这个未排序的数组 [5, 2, 8, 3, 1, 7, 4, 11, 9, 10],我得到的结果是 [1 1 1 1 1 4 4 9 9 10] 而不是正确的结果。有人能找出函数中的问题吗?
func merge_sort(array []uint) []uint {
if len(array) > 1 {
r := len(array) / 2
L := array[:r]
M := array[r:]
L = merge_sort(L)
M = merge_sort(M)
i, j, k := 0, 0, 0
for i < len(L) && j < len(M) {
if L[i] <= M[j] {
array[k] = L[i]
i++
} else {
array[k] = M[j]
j++
}
k++
}
for i < len(L) {
array[k] = L[i]
i++
k++
}
for j < len(M) {
array[k] = M[j]
j++
k++
}
}
return array
}