ccmny

Array shuffle and unshuffle

Sep 7th, 2011
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define printd(A) printf(#A" = %d\n", A)
  4.  
  5. int * shuffle(int * array, int seed, int index, int len);
  6. int * unshuffle(int * array, int seed, int index, int len);
  7. void swap(int * num1, int * num2);
  8. void printArray(int * array, int len);
  9.  
  10. int main()
  11. {
  12.     int vec[5] = {1, 2, 3, 4, 5};
  13.     shuffle(vec, 1, 0, 5);
  14.     printArray(vec, 5);
  15.     puts("\n");
  16.     unshuffle(vec, 1, 0, 5);
  17.     printArray(vec, 5);
  18.     return 0;
  19. }
  20.  
  21. int * shuffle(int * array, int seed, int index, int len)
  22. {
  23.     int result;
  24.     if(index == len)
  25.         return array;
  26.     srand(seed);
  27.     result = rand();
  28.     swap(&array[index], &array[result%len]);
  29.     return shuffle(array, result, index + 1, len);
  30. }
  31.  
  32. int * unshuffle(int * array, int seed, int index, int len)
  33. {
  34.     int result;
  35.     if(index == len)
  36.         return array;
  37.     srand(seed);
  38.     result = rand();
  39.     array = unshuffle(array, result, index + 1, len);
  40.     swap(&array[index], &array[result%len]);
  41.     return array;
  42. }
  43.  
  44. void swap(int * num1, int * num2)
  45. {
  46.     int temp = *num1;
  47.     *num1 = *num2;
  48.     *num2 = temp;
  49. }
  50.  
  51. void printArray(int * array, int len)
  52. {
  53.     int i;
  54.     for(i = 0; i < len; i++)
  55.         printf("array[%d] = %d\n", i, array[i]);
  56. }
Advertisement
Add Comment
Please, Sign In to add comment