【问题标题】:Java Shifting Array Elements DownJava 向下移动数组元素
【发布时间】:2013-01-29 17:19:58
【问题描述】:

我目前正在努力编写一个循环,该循环从 Array 中的某个点开始并将其向下推到正确的一个位置,以便可以在现有值所在的位置放置一个新值,即插入排序。

到目前为止,我有一个循环可以找到值所在的位置:

int hold=0;
 for (int j = 0; j < nElements; j++)   
 {
    int temp = list[j];
    if (temp <= value)
    {
       hold = j;  
    }

 }

我现在正在写 for 循环,它会改变一切。 我有:

for (int j = hold; j >= numElements; j--)
 {
     int temp = list[j];
     list[j] = value;

     list[j+1] = temp;

    }

nElements 是我存储在数组中的当前整数的数量。

当我调用将整数添加到数组的方法时,所做的只是在点 0 中插入第一个数字。再次调用该方法时,根本不会添加数字。

我也不能使用像 System.arraycopy() 这样的预定义方法。我需要编写循环代码。

【问题讨论】:

  • 这不是一个真正的问题,您需要提出一个问题,例如“我运行此代码并且它确实......但我希望它这样做......”

标签: java arrays sorting shift


【解决方案1】:

您应该使用System.arrayCopy()

您实际上并没有复制任何内容,因为您从 hold 开始并在 j &gt;= 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];
}

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

【讨论】:

  • 这是一个糟糕质量的答案。 -1
  • 我不允许使用预定义的方法来完成这项任务。我需要制作自己的循环。
  • @user1729448:那么问题应该提到这一点。请编辑您的问题。
  • @Doorknob - 现在可能好一点了?
  • @Doorknob - 或者} catch(AnswerNotFinishedException anfe) { ... } :)
猜你喜欢
  • 2013-05-17
  • 1970-01-01
  • 2011-12-19
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多