public static void Main()
int[] arr = new int[]{-1,3,2,4,5,-6,7,-9};
for(var i = 0; i < arr.Length; i++){
if(i % 2 == 0 && arr[i] < 0)
if(i == arr.Length - 1 && lastSwapPost < arr.Length - 1){
rotateArr(arr, lastSwapPost, i);
for(var j = i + 1; j < arr.Length; j ++)
rotateArr(arr, i, (int)nextPos);
else if(i % 2 == 1 && arr[i] > 0){
if(i == arr.Length - 1 && lastSwapPost < arr.Length - 1){
rotateArr(arr, lastSwapPost, i);
for(var j = i + 1; j < arr.Length; j ++)
rotateArr(arr, i, (int)nextPos);
Console.WriteLine(String.Join(",", arr));
public static void rotateArr(int[] arr, int start, int end){
Console.WriteLine("start:" + String.Join(",", arr));
Console.WriteLine("start:" + start + " end:" + end);
for(var i = start; i <= end; i++){
Console.WriteLine("start:" + String.Join(",", arr));