【发布时间】:2017-01-26 03:18:43
【问题描述】:
此方法用于插入元素 toAdd 作为数组 arr 的新第一个元素,移动所有当前元素以腾出空间。数组的原始最后一个元素将丢失。该方法没有返回值,如果数组没有元素,它应该没有效果。
public static void insert(int[] arr, int toAdd){
if(arr.length > 0) {
for(int i = arr.length - 1; i > 0; --i) {
arr[i] = arr[i - 1];
}
arr[0] = toAdd;
}
}
我理解关于 if(arr.length > 0) 的部分,这保证我们正在使用一个至少有 1 个元素的数组。其余的逻辑让我感到困惑。为什么设置 i = arr.length,为什么之后设置 a - 1?为什么我 > 0?和--i?
谢谢
【问题讨论】:
-
试着在一张纸上用一个简单的数组来做算法。它会帮助你理解它。
-
如果您考虑执行从
i = 0到arr.length - 1的算法,请在纸上尝试:您将需要一个额外的变量,否则您会丢失一些信息。向后循环可以摆脱这个变量。 -
@ArnaudDenoyelle 谢谢,向后循环是什么意思?
-
@jun 我的意思是,从
i = arr.length - 1迭代到i = 0(使用i--)而不是从i = 0迭代到i = arr.length - 1(使用i++)。 -
@ArnaudDenoyelle 我想我现在开始理解它了。谢谢!
标签: java