这种归并排序的实现有什么问题?

问题描述 投票:0回答:0

我一直在尝试像在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
}
sorting go mergesort
© www.soinside.com 2019 - 2024. All rights reserved.