다음은 배열 회전을 위한 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' 기능을 이용하여 해당 데이터를 표시합니다.