2013-10-26 224 views
0

数组的值我想要的东西,从一个数组是这样的:重新排序int数组

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} 

要这样:

{6, 5, 4, 3, 2, 1, 0, 13, 12, 11, 10, 9, 8, 7, 20, 19, 18, 17, 16, 15, 14} 

但我无能如何。我认为这种方法可以作为我计划执行的代码的一个很好的选择。 (我用Java博士所以没有导入文件的BTW)

的整数数组称为integer[]

(for j = 0; j < 3; j++) { 
      (for k = 0; k = 6; k++) { 
       int newj = j+1; 
       int array = integer[k*newj]; 
       integer [k*newj] = integer[6 - k*newj -1]; 
       integer[6 - k*newj - 1] = array; 
      } 
    } 

但是,这是行不通的。

有什么建议吗?这不是任务的一部分,但它是一周内会发生的考试的一部分,我想确保这一点。

+0

尝试将'k = 6'更改为'k <= 6'。另外,你的'for'语法是错误的,它应该是'for(j = 0; j <3; j ++)',即''''在parens之外。 –

+0

另外,如果这是你想要的:'for(int j = 1; j <= 3; j ++)',你可以不用'newj',而只是让'j'从1迭代到3。 –

+0

虽然我这样做,但我得到一个ArrayOutofBounds = -1。看起来错误在倒数第二行。 – user2922148

回答

1

阵列中有21个元素。从你提到的描述中,你想把它分成三部分。每个部分有7个元素并将它们反转。

对于每个部分,我们可以做交换数据操作。

  1. 用第7个元素交换第1个元素。
  2. 看到第6个元素的第2个元素。
  3. 用第5个元素交换第3个元素。 ......

注:的终止条件是7/2进行数据交换。这是7个元素的中间指数。

这里还有一件事是确定什么是开始索引结束索引为每个分开的部分。

以下代码正在满足您的要求。希望这可以帮助你一些。

for (int j = 0; j <3; j++) { 
     for (int k = 0; k <7/2; k++) { 
      int newj = j+1; 
      int array = integer[7*newj-k-1]; 
      integer[7*newj-k-1]= integer [7*j+k]; 
      integer [7*j+k] = array; 
     } 
    }