正如问题所述,我无法找到以下算法中的问题所在。它是归并排序的辅助函数,即用于组合排序数组的函数。
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]。
此函数的 JavaScript 等效项按预期工作,但我不知道为什么它在 Go
慕田峪9158850
RISEBY
相关分类