Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void printlist(int* A,int start, int end)
- {
- for(int i = start;i < end;i++)
- {
- printf("%d ",A[i]);
- }
- }
- int partition(int* A, int p, int r)
- {
- int x = A[r];
- int i = p - 1;
- for(int j = p;j<= r-1;j++)
- {
- if(A[j] <= x)
- {
- i++;
- int temp_Ai = A[i];
- int temp_Aj = A[j];
- A[i] = temp_Aj;
- A[j] = temp_Ai;
- }
- }
- int temp_i1 = A[i+1];
- int temp_ar = A[r];
- A[i+1] = temp_ar;
- A[r] = temp_i1;
- printlist(A,p,r+1);
- printf("\n");
- return i+1;
- }
- void quicksort(int* A,int p, int r)
- {
- if(p < r)
- {
- int q = partition(A,p,r);
- quicksort(A,p,q-1);
- quicksort(A,q+1,r);
- }
- }
- void permute(int* shuffled,int* A,int *B, int M)
- {
- for(int i = 0;i<M;i++)
- {
- shuffled[i] = A[B[i]];
- }
- }
- int main()
- {
- int P = 13;
- int M = 8;
- int T;
- int B[M];
- for(int i = 0;i<M;i++)
- {
- B[i] = ((i+1)*P) % M;
- }
- scanf("%d",&T);
- for(int i = 0;i<T;i++)
- {
- int input[M];
- int shuffled[M];
- for(int i = 0;i<M;i++)
- {
- scanf("%d",&input[i]);
- }
- permute(shuffled,input,B,M);
- printlist(shuffled,0,M);
- printf("\n");
- quicksort(shuffled,0,M-1);
- printlist(shuffled,0,M);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement