Program for array rotation( Method 3 - JUGGLING Algorithm)

   Method 3 - JUGGLING Algorithm     



Code in C :

#include<stdio.h>
int main(){
    int arr[100],temp,d,n,gcd;
    printf("Enter size of array and Rotation:");
    scanf("%d%d",&n,&d);
    for(int i=0;i<n;i++){
        scanf("%d",&arr[i]);
    }
    printf("array:\n");
    for(int i=0;i<n;i++){
        printf("%d ",arr[i]);
    }
    //GCD
    for(int i=1; i <= d && i <= n; ++i){
        if(d%i==0 && n%i==0)
            gcd = i;
    }
    for(int k=0;k<gcd;k++){
        int p,j;
        temp=arr[k];
        j=k;
    while(1){
        p=j+d;
        if(p>=n)
        p=p-n;
        if(p==k)
        break;
        arr[j]=arr[p];
        j=p;
    }
    arr[j]=temp;
    }
    printf("\nAfter Rotation array:\n");
    for(int i=0;i<n;i++){
        printf("%d ",arr[i]);
    }
    return 0;
}


Output:

C:\Users\Rakesh> gcc .\ArrayRotation_JUGGLINGmethod.c

C:\Users\Rakesh> ./a

Enter size of array and Rotation:12

4

1

2

3

4

5

6

7

8

9

10

11

12

array:

1 2 3 4 5 6 7 8 9 10 11 12

After Rotation array:

5 6 7 8 9 10 11 12 1 2 3 4









Comments