我一直在try 实现合并排序算法,就像我在Python中所做的那样,但由于某些原因,结果并不正确.
例如,对于这个未排序的数组[5,2,8,3,1,7,4,11,9,10],我得到的结果是[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
}