以下是用于数组旋转的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'函数显示相关数据。