📌  相关文章
📜  Java程序在1到N的数组中向右旋转所有奇数和向左旋转所有偶数

📅  最后修改于: 2022-05-13 01:54:36.723000             🧑  作者: Mango

Java程序在1到N的数组中向右旋转所有奇数和向左旋转所有偶数

给定一个由[1, N]范围内的N个数字组成的排列数组A[] ,任务是左旋转排列的所有偶数,右旋转排列的所有奇数并打印更新后的排列。
注意: N 总是偶数。
例子:

方法:

  1. 很明显,奇数元素总是在偶数索引上,偶数元素总是在奇数索引上。
  2. 为了对偶数进行左旋转,我们只选择奇数索引。
  3. 为了对奇数进行右旋转,我们只选择偶数索引。
  4. 打印更新的数组。

下面是上述方法的实现:

Java
// Java program to implement
// the above approach
  
import java.io.*;
import java.util.*;
import java.lang.*;
  
class GFG {
  
    // function to left rotate
    static void left_rotate(int[] arr)
    {
        int last = arr[1];
        for (int i = 3;
            i < arr.length;
            i = i + 2) {
            arr[i - 2] = arr[i];
        }
        arr[arr.length - 1] = last;
    }
  
    // function to right rotate
    static void right_rotate(int[] arr)
    {
        int start = arr[arr.length - 2];
        for (int i = arr.length - 4;
            i >= 0;
            i = i - 2) {
            arr[i + 2] = arr[i];
        }
        arr[0] = start;
    }
  
    // Function to rotate the array
    public static void rotate(int arr[])
    {
        left_rotate(arr);
        right_rotate(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
  
    // Driver code
    public static void main(String[] args)
    {
        int arr[] = { 1, 2, 3, 4, 5, 6 };
  
        rotate(arr);
    }
}


输出:
5 4 1 6 3 2

时间复杂度: O(N)
辅助空间: O(1)

请参阅完整的文章在 1 到 N 的数组中向右旋转所有奇数和向左旋转所有偶数以获取更多详细信息!