private static void ShiftLeft(Element[] array) { var tempElement = new Element(); var greatestCommonDivisor = GreatestCommonDivisor(N, K); for (int i = 0; i < greatestCommonDivisor; i++) { int currentIndex = i; tempElement = array[i]; var nextIndex = currentIndex + K; if (nextIndex >= N) { nextIndex -= N; } while (nextIndex != i) { array[currentIndex] = array[nextIndex]; currentIndex = nextIndex; nextIndex += K; if (nextIndex >= N) { nextIndex -= N; } } array[currentIndex] = tempElement; } }
private static void InitializeArray(Element[] array) { for (int i = 0; i < array.Length; i++) { array[i].Data = i; } }
static void PrintArray(Element[] array) { for (int i = 0; i < array.Length; i++) { Console.Write("{0} ", array[i].Data); } Console.WriteLine(); }
static void Main() { Element[] elements = new Element[N]; InitializeArray(elements); PrintArray(elements); ShiftLeft(elements); PrintArray(elements); }