gpt4 book ai didi

go - Go 中的快速排序

转载 作者:IT王子 更新时间:2023-10-29 01:19:36 25 4
gpt4 key购买 nike

我正在学习 Go,并尝试实现快速排序,但它没有返回完整列表。根据我对 Go 的理解,它与我编写的功能性 Ruby 实现相匹配。

我的代码是:

func quickSort(data []string) []string {
if len(data) > 1 {
pivot := data[0]
smaller := make([]string, 0, len(data))
equal := make([]string, 0, len(data))
larger := make([]string, 0, len(data))
for i := 1; i < len(data); i++ {
if data[i] > pivot {
larger = append(larger, data[i])
} else if data[i] < pivot {
smaller = append(smaller, data[i])
} else {
equal = append(equal, data[i])
}
}
return append(append(quickSort(smaller), equal...), quickSort(larger)...)
} else {
return data
}
}

我很困惑这里有什么不起作用。

最佳答案

您遇到的错误是您永远不会将枢轴值附加到返回的 slice 。因此,对于每次递归调用,您都会失去基准。

对代码进行以下更改,它将起作用:

equal := make([]string, 1, len(data))
equal[0] = pivot

关于go - Go 中的快速排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24483364/

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