我目前正在努力编写一个循环,该循环从Array
中的某个点开始,并将其向下推到右侧一个位置,以便在现有值所在的位置放置新值,即插入排序。
到目前为止,我有一个循环,可以找到值的位置:
int hold=0;
for (int j = 0; j < nElements; j++)
{
int temp = list[j];
if (temp <= value)
{
hold = j;
}
}
我现在正在为循环写文章,这个循环改变了一切。我有:
for (int j = hold; j >= numElements; j--)
{
int temp = list[j];
list[j] = value;
list[j+1] = temp;
}
nElement是我存储在数组中的当前int数。
当我调用将整数添加到数组的方法时,所做的只是在0点插入第一个数字。当再次调用该方法时,根本不会添加数字。
我也不能使用像System.arraycopy()
这样的预定义方法。我需要对循环进行编码。
您应该使用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];
}
请注意,这段代码是故意未经测试的,因为这个问题可能是家庭作业。