다음은 배열 회전을 위한 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("Rotating the array to the left "); my_inst.rotate_left(my_arr, 2, 8); System.out.println("Displaying the array from a specific index "); my_inst.display_arr(my_arr, 8); } }
출력
Rotating the array to the left Displaying the array from a specific index 89 91 34 21 11 0 5 7
Demo라는 클래스에는 'rotate_left'라는 정적 함수가 포함되어 있습니다. 여기에서 배열은 함수의 매개변수 중 하나로 전달되며, 'd'는 배열이 회전해야 하는 양이고 'len'은 배열의 크기입니다. 'greatest_common_divisor' 함수는 'd'와 'len'의 값을 전달하여 호출됩니다. 'for' 루프는 'greatest_common_divisor'에 대한 함수 호출 결과에 대해 반복됩니다.
배열 요소를 표시하는 데 사용되는 'display_arr'이라는 함수가 정의되어 있습니다. 또 다른 함수 'greatest_Common_divisor'는 두 숫자 중 최대 공약수를 찾기 위해 정의한 재귀 함수입니다. 메인 함수에서 클래스의 인스턴스가 생성됩니다. 배열도 정의되고 이 객체에서 함수가 호출됩니다. 'display_arr' 기능을 이용하여 해당 데이터를 표시합니다.