Advertisement
vinocastro

ME 5

Dec 3rd, 2020 (edited)
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void printlist(int* A,int start, int end)
  5. {
  6.     for(int i = start;i < end;i++)
  7.     {
  8.         printf("%d ",A[i]);
  9.     }
  10. }
  11.  
  12. int partition(int* A, int p, int r)
  13. {
  14.     int x = A[r];
  15.     int i = p - 1;
  16.     for(int j = p;j<= r-1;j++)
  17.     {
  18.         if(A[j] <= x)
  19.         {
  20.             i++;
  21.             int temp_Ai = A[i];
  22.             int temp_Aj = A[j];
  23.             A[i] = temp_Aj;
  24.             A[j] = temp_Ai;
  25.         }
  26.     }
  27.     int temp_i1 = A[i+1];
  28.     int temp_ar = A[r];
  29.     A[i+1] = temp_ar;
  30.     A[r] = temp_i1;
  31.     printlist(A,p,r+1);
  32.     printf("\n");
  33.     return i+1;
  34. }
  35.  
  36. void quicksort(int* A,int p, int r)
  37. {
  38.     if(p < r)
  39.     {
  40.         int q = partition(A,p,r);
  41.         quicksort(A,p,q-1);
  42.         quicksort(A,q+1,r);
  43.     }
  44. }
  45.  
  46. void permute(int* shuffled,int* A,int *B, int M)
  47. {
  48.     for(int i = 0;i<M;i++)
  49.     {
  50.         shuffled[i] = A[B[i]];
  51.     }
  52. }
  53.  
  54. int main()
  55. {
  56.     int P = 13;
  57.     int M = 8;
  58.     int T;
  59.     int B[M];
  60.  
  61.     for(int i = 0;i<M;i++)
  62.     {
  63.         B[i] = ((i+1)*P) % M;
  64.     }
  65.    
  66.     scanf("%d",&T);
  67.     for(int i = 0;i<T;i++)
  68.     {
  69.         int input[M];
  70.         int shuffled[M];
  71.         for(int i = 0;i<M;i++)
  72.         {
  73.             scanf("%d",&input[i]);
  74.         }
  75.         permute(shuffled,input,B,M);
  76.         printlist(shuffled,0,M);
  77.         printf("\n");
  78.         quicksort(shuffled,0,M-1);
  79.         printlist(shuffled,0,M);
  80.     }
  81.    
  82.  
  83.  
  84.  
  85.  
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement