Java程序用于数组旋转

以下是用于数组旋转的Java程序-

示例

public class Demo{
   void rotate_left(int my_arr[], int d, int len){
      d = d % len;
      int i, j, k, temp;
      int divisor = greatest_Common_divisor(d, len);
      for (i = 0; i < divisor; i++){
         temp = my_arr[i];
         j = i;
         while (true){
            k = j + d;
            if (k >= len)
            k = k - len;
            if (k == i)
            break;
            my_arr[j] = my_arr[k];
            j = k;
         }
         my_arr[j] = temp;
      }
   }
   void display_arr(int my_arr[], int size){
      int i;
      for (i = 0; i < size; i++)
      System.out.print(my_arr[i] + " ");
   }
   int greatest_Common_divisor(int a, int b){
      if (b == 0)
      return a;
      else
      return greatest_Common_divisor(b, a % b);
   }
   public static void main(String[] args){
      Demo my_inst = new Demo();
      int my_arr[] = { 5, 7, 89, 91, 34, 21, 11, 0 };
      System.out.println("向左旋转数组");
      my_inst.rotate_left(my_arr, 2, 8);
      System.out.println("从指定索引显示数组");
      my_inst.display_arr(my_arr, 8);
   }
}

输出结果

向左旋转数组
从指定索引显示数组
89 91 34 21 11 0 5 7

一个名为Demo的类包含一个名为rotate left的静态函数。这里,数组作为参数之一传递给函数,d是应该旋转数组的数量,len是数组的大小。通过传递d和len的值来调用最大公约数函数。for循环在函数调用的结果上迭代到最大公约数。

定义了一个名为'display_arr'的函数,用于显示数组元素。定义另一个函数'greatest_Common_divisor'来寻找两个数的最大公约数,它是一个递归函数。在main函数中,创建类的一个实例。还定义了一个数组,并在该对象上调用函数。使用'display_arr'函数显示相关数据。