我有n個元素的陣列,並且我想要寫的函數來切換所述陣列之間的元件是這樣的:開關元件
1 2 3 ---> 3 1 2 ---> 2 3 1 ---> 1 2 3
我想不出一個簡單的算法來做到這一點。請幫忙。這不是功課。
我有n個元素的陣列,並且我想要寫的函數來切換所述陣列之間的元件是這樣的:開關元件
1 2 3 ---> 3 1 2 ---> 2 3 1 ---> 1 2 3
我想不出一個簡單的算法來做到這一點。請幫忙。這不是功課。
使用隊列而不是列表。排隊每個步驟的出隊物品。
另一種選擇是使用循環緩衝區。只要將數組保持原樣並有一個指向第一個元素的指針,就可以在每一步移動指針。分兩個階段讀取陣列。 1.從指針到結尾。 2.從開始到指針。
第三種方法是隻交換一個元素。
int tmp = arr[0];
for(int i = 0; i < arr.Length - 1; i++)
{
arr[i] = arr[i+1];
}
arr[arr.Length - 1] = tmp;
我想你在這裏有一個錯誤。如果你的數組長度是2,你可以看到它。在這種情況下,循環內的代碼將永遠不會執行,並且你的數組在'arr [0]'和'arr [1]'中具有相同的值。你的循環控制應該是'我
@JimMischel,你當然是對的。 –
你只是想旋轉數組?
// Rotate left
int temp = a[0];
for (int i = 0; i < a.Length-1; ++i)
a[i] = a[i+1];
a[a.Length-1] = temp;
// Rotate right
int temp = a[a.Length-1];
for (int i = a.Length-1; i > 0; --i)
a[i] = a[i-1];
a[0] = temp;
如果你只是旋轉陣列 - 爲什麼?只需提供一個接口即可訪問可以處理模塊索引的陣列。即可以從該陣列中的任何地方開始,並且在必要時回到零。 –
爲什麼downvotes?這是一個完全合理的,如果有點簡單的問題。有想要旋轉陣列的正確理由。 –