Skip to content

Instantly share code, notes, and snippets.

@kgabis
Created September 8, 2011 18:07
Show Gist options
  • Save kgabis/1204138 to your computer and use it in GitHub Desktop.
Save kgabis/1204138 to your computer and use it in GitHub Desktop.
Array shuffle and unshuffle
#include <stdio.h>
int * shuffle(int * array, int seed, int index, int len);
int * unshuffle(int * array, int seed, int index, int len);
void swap(int * num1, int * num2);
void printArray(int * array, int len);
int main()
{
int vec[5] = {1, 2, 3, 4, 5};
shuffle(vec, 1, 0, 5);
printArray(vec, 5);
puts("\n");
unshuffle(vec, 1, 0, 5);
printArray(vec, 5);
return 0;
}
int * shuffle(int * array, int seed, int index, int len)
{
int result;
if(index == len)
return array;
srand(seed);
result = rand();
swap(&array[index], &array[result%len]);
return shuffle(array, result, index + 1, len);
}
int * unshuffle(int * array, int seed, int index, int len)
{
int result;
if(index == len)
return array;
srand(seed);
result = rand();
array = unshuffle(array, result, index + 1, len);
swap(&array[index], &array[result%len]);
return array;
}
void swap(int * num1, int * num2)
{
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
void printArray(int * array, int len)
{
int i;
for(i = 0; i < len; i++)
printf("array[%d] = %d\n", i, array[i]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment