这是我的数组:
int[] myArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
假设我想将myArray [3](可以是任何元素)和myArray [6](与该元素相同)移动到数组的前面,同时重新排列后面,我该怎么做?例:
这个:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
变成这个:
{3, 6, 0, 1, 2, 4, 5, 7, 8, 9}
要将索引x
移到最前面,您需要:
x
0
到x - 1
一个索引,例如System.arrayCopy
0
您在第一步中记住的值例如:
public void moveToHead(int[] values, int index)
{
// TODO: Argument validation
int value = values[index];
System.arraycopy(values, 0, values, 1, index - 1);
values[0] = value;
}
请注意,可以正确System.arraycopy
处理复制:
如果src和dest参数引用同一数组对象,则执行复制,就好像先将srcPos到srcPos + length-1位置上的分量复制到具有长度分量的临时数组,然后将临时数组的内容通过目标数组的destPos + length-1复制到位置destPos。
您最初的示例提到了两个元素-虽然您可以提前知道这两个元素而更有效地完成所有这些工作,但是将其建模为两个moveToHead
调用将非常容易得多。您需要注意顺序-例如,如果您想6
先将索引移到头部,则需要考虑索引的第一步,而不是索引3,然后再移动索引4。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句