我正在努力编写一个从Array
中的某个点开始的循环,并将其向下推到正确的一个位置,以便可以将新值放置在现有的位置,即插入排序。
到目前为止,我有一个循环,可以找到该值的位置:
int hold=0;
for (int j = 0; j < nElements; j++)
{
int temp = list[j];
if (temp <= value)
{
hold = j;
}
}
我现在正在写for for循环,将一切都转移。 我有:
for (int j = hold; j >= numElements; j--)
{
int temp = list[j];
list[j] = value;
list[j+1] = temp;
}
nElements是我存储在数组中的当前整数。
当我调用将整数添加到数组的方法时,所有这一切只是在第0位插入第一个数字。再次调用该方法时,根本不会添加该数字。
我也不能使用像System.arraycopy()
这样的预定义方法。我需要编写循环代码。
答案 0 :(得分:0)
您应该使用System.arrayCopy()
。
你实际上并没有复制任何东西,因为你是从hold
开始并在j >= nElements
循环而不应该发生的。
要腾出空间,你需要使用类似的东西:
System.arrayCopy(list, hold, list, hold+1, nElements - hold - 1);
已添加现在我们发现我们无法使用系统调用:
或者,如果不允许arrayCopy
,您将需要一个循环,例如:
for ( int i = nElements - 1; i > hold; i-- ) {
list[i] = list[i-1];
}
请注意,此代码是故意未经测试的,因为此问题很可能是家庭作业。