Microsoft Interview Question
Software Engineer in Tests//(More or less same code as above)
import java.util.Random;
public class Main {
public static void main(String[] args) {
int[] a = new int[52];
int i, temp, temp2;
for(i=0;i<52;i++) // Inialize the array
{
a[i] = i;
}
Random rd = new Random();
for(i=0;i<52;i++)
{ //Shuffle the array
temp = rd.nextInt(52);
temp2 = a[i];
a[i] = a[temp];
a[temp] = temp2;
}
System.out.println("The Sorted array is");
for(i=0;i<52;i++)
{
System.out.println(a[i]);
}
}
}
C implementation
#include<stdio.h>
#include<time.h>
#define TOTALCARDS 52
void Shuffle(int a[], int size);
void printarray(int a[], int size);
void Swap(int *, int *);
int main()
{
int a[TOTALCARDS];
int i=0;
for(i=0;i<TOTALCARDS;i++)
{
a[i] = i+1;
}
printf("Original Array");
printarray(a, TOTALCARDS);
Shuffle(a, TOTALCARDS);
printf("Shuffled Array");
printarray(a, TOTALCARDS);
getch();
return(0);
}
void Shuffle(int a[], int size)
{
int randnum,i=0;
srand((unsigned int) time(NULL));
for(i=0;i<size;i++)
{
randnum=rand()%(size-1);
Swap(&a[i], &a[randnum]);
}
return;
}
void printarray(int a[], int size)
{
int i=0;
for(i=0;i<size;i++)
{
printf("\na[%d] = %d", i, a[i]);
}
printf("\n\n\n");
return;
}
void Swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
return;
}
#include<stdio.h>
void swap(int *a,int x)
{
int temp=a[x];
a[x]=a[x-1];
a[x-1]=temp;
}
void suffle(int *a,int n)
{
int mid=n/2;
int i,j,k;
for(i=0;i<mid-1;i++)
{
j=i;
k=0;
while(k<=i)
{
swap(a,mid+j);
j=j-2;
k++;
}
}
}
main()
{
int a[52],i;
suffle(a,52);
printf("\nafter suffle :\n");
for(i=0;i<52;i++)
printf("%d ",a[i]);
return 0;
}
How about shuffling them using the Knuth's Donald shuffling algo
- Rashi Gupta October 22, 2008