反转从索引i到j(包括)的数组段

时间:2016-01-26 17:45:47

标签: java arrays

我想要从索引i到j(包括两者)开始反转给定数组的一部分。例如,如果它包含:

1 2 3 4 5 6 7

反向过程后,它应如下所示:

1 6 5 4 3 2 7

在这种情况下,i = 1,j = 5。 我的方法是:

  public static void sw(int[] l, int i,int j)
  {
    for(int z=i; z<((j-i)+1)/2;z++)
    {
      int y=((j-i)+1) - z - 1;
      int temp = l[z];
      l[z] = l[y];
      l[y] = temp;
    }
  }

某些情况下工作不正常。

Case#1:

6 78 63 59 28 24 8 96 99
output is:
6 78 59 63 28 24 8 96 99

1 个答案:

答案 0 :(得分:0)

您可以完全删除“z”和“y”。它们太复杂,没有必要完成任务。你只想增加'i'并递减'j'直到i <= j 不再是真的。

因此我们有:

public static void sw(int[] l, int i,int j)
  {
    for(; i<=j;i++, j--)
    {
      int temp = l[i];
      l[i] = l[j];
      l[j] = temp;
    }
  }

for循环有一个空的第一个语句,因为'i'已经被声明了。

希望这有帮助!