作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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()
通常是最好的。)
关于arrays - 当我对数组 B 进行排序时,数组 A 的内容会发生变化,这应该是 A 的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55476589/
我是一名优秀的程序员,十分优秀!