2013-10-26 171 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; 
     } 
    }