Java向下移动阵列元素

时间:2013-02-14 00:26:02

标签: java arrays sorting shift

我正在努力编写一个从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()这样的预定义方法。我需要编写循环代码。

1 个答案:

答案 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];
}

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