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
Post a Comment