gpt4 book ai didi

go - 排序一片整数

转载 作者:行者123 更新时间:2023-12-01 21:16:07 26 4
gpt4 key购买 nike

我的目的是对int slice 中给定的值进行排序。我不想使用sort包,而不想实现sort函数。问题是,当我尝试使用索引比较 slice 元素时,出现超出范围的错误。修改 slice 的正确方法是什么?

func sortSlice( sli []int ) {
j := 0
i := 1
for range sli {

if( sli[j] > sli[j+1] ) {
var temp int = sli[j];
sli[i] = sli[j]
sli[j] = temp
}
j++
}
}

最佳答案

您将range覆盖在sli之上,这意味着您重复len(sli)次数,因此j0变为len(sli)-1。现在,您将元素j与元素j+1进行比较。对于最后一次迭代,这意味着您将元素len(sli)-1与元素len(sli)进行比较。最后一个索引就是问题。没有元素len(sli),因为sli的索引从0变为len(sli)-1

还要注意,在Go中,您可以说sli[i], sli[j] = sli[j], sli[i]交换两个项目。就是说,您的代码无法正常工作,因为在任何地方都没有i定义。

问题 list 上的下一个问题是,这并不是我认为您要使用的所有冒泡算法。您仅对 slice 进行一次迭代,但这不会对其进行排序。您将不得不重复循环,直到不再发生交换。

关于go - 排序一片整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61476928/

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