using
System;
class
GFG{
public
static
void
leftRotate(
int
[]arr,
int
d,
int
n)
{
leftRotateRec(arr, 0, d, n);
}
public
static
void
leftRotateRec(
int
[]arr,
int
i,
int
d,
int
n)
{
if
(d == 0 || d == n)
return
;
if
(n - d == d)
{
swap(arr, i, n - d + i, d);
return
;
}
if
(d < n - d)
{
swap(arr, i, n - d + i, d);
leftRotateRec(arr, i, d, n - d);
}
else
{
swap(arr, i, d, n - d);
leftRotateRec(arr, n - d + i,
2 * d - n, d);
}
}
public
static
void
printArray(
int
[]arr,
int
size)
{
int
i;
for
(i = 0; i < size; i++)
Console.Write(arr[i] +
" "
);
Console.WriteLine();
}
public
static
void
swap(
int
[]arr,
int
fi,
int
si,
int
d)
{
int
i, temp;
for
(i = 0; i < d; i++)
{
temp = arr[fi + i];
arr[fi + i] = arr[si + i];
arr[si + i] = temp;
}
}
public
static
void
Main(String[] args)
{
int
[]arr = { 1, 2, 3, 4, 5, 6, 7 };
leftRotate(arr, 2, 7);
printArray(arr, 7);
}
}