Java向下移动数组元素



我目前正在努力编写一个循环,该循环从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];
}

请注意,这段代码是故意未经测试的,因为这个问题可能是家庭作业。

最新更新