gpt4 book ai didi

algorithm - 以下合并排序算法有什么问题?

转载 作者:IT王子 更新时间:2023-10-29 01:55:49 24 4
gpt4 key购买 nike

正如问题所述,我无法找到以下算法中的问题所在。它是合并排序的辅助函数,即用于组合排序数组的函数。

func Merge(toSort *[]int, p, q, r int) {
arr := *toSort
L := arr[p:q]
R := arr[q:r+1]
fmt.Println(L)
fmt.Println(R)
i := 0
j := 0

for index := p; index <= r; index++ {
if i >= len(L) {
arr[index] = R[j]
j += 1
continue
} else if j >= len(R) {
arr[index] = L[i]
i += 1
continue
}

if L[i] > R[j] {
fmt.Println("right smaller")
arr[index] = R[j]
j += 1
continue
}
if L[i] <= R[j] {
fmt.Println("left smaller")
arr[index] = L[i]
i += 1
continue
}

}

}

对于 arr := []int{1,7,14,15,44,65,79,2,3,6,55,70} 输出 [ 1 2 2 2 2 2 2 2 3 6 55 70]

Golang Play link

此函数的 JavaScript 等价物按预期工作,但我不知道为什么它在 Go 中不起作用

谢谢

最佳答案

Golang slice 通过引用传递。所以你不需要首先将指针传递给函数,但你确实需要显式复制LR 或者完全合并到不同的 slice 中。您目前正在写入您从中获取值的同一底层内存。

关于algorithm - 以下合并排序算法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com