Java向下移动数组元素
我目前正在努力编写一个循环,该循环从Java向下移动数组元素,java,arrays,sorting,shift,Java,Arrays,Sorting,Shift,我目前正在努力编写一个循环,该循环从数组中的某个点开始,然后将其向下推到右侧的某个点,以便在现有值所在的位置放置一个新值,即插入排序 到目前为止,我有一个循环,可以找到值的位置: int hold=0; for (int j = 0; j < nElements; j++) { int temp = list[j]; if (temp <= value) { hold = j; } } NeElements是我在数组中
数组中的某个点开始,然后将其向下推到右侧的某个点,以便在现有值所在的位置放置一个新值,即插入排序
到目前为止,我有一个循环,可以找到值的位置:
int hold=0;
for (int j = 0; j < nElements; j++)
{
int temp = list[j];
if (temp <= value)
{
hold = j;
}
}
NeElements是我在数组中存储的当前整数数
当我调用将整数添加到数组中的方法时,所做的只是在点0中插入第一个数字。当再次调用该方法时,根本不添加数字
我也不能使用预定义的方法,如System.arraycopy()
。我需要对循环进行编码。您应该使用System.arrayCopy()
实际上,您没有复制任何内容,因为您从hold
开始,并在j>=neelements
时循环,这是不应该发生的
要腾出空间,您需要使用以下方法:
System.arrayCopy(list, hold, list, hold+1, nElements - hold - 1);
添加了现在我们发现无法使用系统调用:
或者,如果不允许arrayCopy
,则需要一个循环,例如:
for ( int i = nElements - 1; i > hold; i-- ) {
list[i] = list[i-1];
}
请注意,此代码故意未经测试,因为此问题可能是家庭作业。这是一个质量糟糕的答案-1不允许我使用预定义的方法来完成此任务。我需要做我自己的循环。@user1729448:那么问题应该提到这一点。请编辑您的问题。@Doorknob-也许现在好一点了?@Doorknob-或者}catch(AnswerNotFinishedException anfe){…}
:)这不是一个真正的问题,您需要提出一个问题,比如“我运行这个代码,它确实……但我希望它这样做……”
for ( int i = nElements - 1; i > hold; i-- ) {
list[i] = list[i-1];
}