将元素插入数组并将其他元素向右移动。

3

假设我有一个数组:{5, 7, 8, 9, 10}。但是我想要插入一个元素,使得数组变成了{5, 6, 7, 8, 9},也就是在57之间插入6,把10推出去并将9向右移。

如何使用数组和for循环来解决这个问题?


不要使用 for 循环,而是使用 System.arraycopy 文档在这里。 这就是它的作用。 - Dawood ibn Kareem
1个回答

2

数组是非常低级的结构,没有为您执行此操作的方法。应该使用ArrayList来完成这项工作。

如果仅仅是学术练习,不会用于生产环境,您可能会对ArrayList的作者如何实现这样一件事情感到好奇:

通过...就是...去做它。

分解步骤并执行它们。

Starting state: [5, 7, 8, 9, 10]
 Desired state: [5, 6, 7, 8, 9 ]

换句话说,我们需要将7/8/9复制到新的位置以腾出空间。完成后,我们可以写入6。
int[] in = {5, 7, 8, 9, 10};
// Copy starting from index 1 (second number)
// Copy into the same array, at index 2.
// ... and copy 3 numbers.
System.arraycopy(in, 1, in, 2, 3);
System.out.println(Arrays.toString(in));
// Prints: [5, 7, 7, 8, 9].
in[1] = 6;
System.out.println(Arrays.toString(in));
// Prints: [5, 6, 7, 8, 9].

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接