gpt4 book ai didi

arrays - 当我对数组 B 进行排序时,数组 A 的内容会发生变化,这应该是 A 的副本

转载 作者:行者123 更新时间:2023-12-02 12:38:25 25 4
gpt4 key购买 nike

我有一个 10x 循环来对数字数组进行排序 B (原始数组 A 的副本)并记录运行时间,因为数组在循环结束时被排序,所以我创建了一个重复数组 B要更改和使用A在新循环开始时将其设置为原始状态。

何时排序 B , A即使我只发送 B 也会自动排序.
为什么会发生这种情况以及如何改变它?

环形:

for (i in 1..10) {
val B = A
val time = measureTimeMillis {
val sorting = Insertion(B); sorting.sor
}
println(""+ cycle++ + "\t" + time)
}

种类:
class Insertion(var B: IntArray) {
fun sort(): Unit {
for( j in 1 until B.size){
var key = B[j]
var i = j-1
while( i > -1 && B[i] > key){
B[i+1] = B[i]
i= i - 1
}
B[i+1] = key
}
}
}

最佳答案

在循环开始时,您有一个 IntArray对象,以及一个引用它的变量:

    A ──→ IntArray

然后创建第二个变量,它引用相同的 IntArray目的。
    A
>─→ IntArray
B

希望这能说明为什么通过引用 B 进行更改。也可以通过引用 A 看到.

如果你想要 B引用不同的 IntArray ,您必须复制它,例如:
val B = A.copyOf()

或者:
val B = A.clone()

或者:
val B = IntArray(a.size){ A[it] }

或其他各种方式。 ( copyOf() 通常是最好的。)

(最后,请注意 Kotlin 的约定是变量、方法和属性以小写字母开头,只有类和类型参数以大写字母开头。)

关于arrays - 当我对数组 B 进行排序时,数组 A 的内容会发生变化,这应该是 A 的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55476589/

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