C语言编程入门基础学习—完美洗牌算法之面试题

C语言编程入门基础学习—完美洗牌算法之面试题_第1张图片
C语言编程入门基础学习—完美洗牌算法之面试题_第2张图片

随机必然有重复,所谓“不重复的随机”实际上是洗牌。洗牌算法参考下面:

#include

#include

#include

intd[6];

inti,n,a,b,t;

intc,j;

voidmain() {

srand(time(NULL));

printf("shuffle 0..n-1 demo");

for(n=1;n

printf("_____n=%d_____",n);

j=1;

for(c=1;c

j*=n*2;

for(c=1;c

for(i=0;i

for(i=n;i>0;i--) {/* 打乱0~n-1 */

a=i-1;b=rand()%i;

if(a!=b)

}

printf("%04d:",c);

for(i=0;i

printf("");

}

}

printf("shuffle 1..n demo");

for(n=1;n

printf("_____n=%d_____",n);

j=1;

for(c=1;c

j*=n*2;

for(c=1;c

for(i=1;i

for(i=n;i>1;i--) {/* 打乱1~n */

a=i;b=rand()%i+1;

if(a!=b)

}

printf("%04d:",c);

for(i=1;i

printf("");

}

}

}

C语言编程入门基础学习—完美洗牌算法之面试题_第3张图片
C语言编程入门基础学习—完美洗牌算法之面试题_第4张图片
C语言编程入门基础学习—完美洗牌算法之面试题_第5张图片
C语言编程入门基础学习—完美洗牌算法之面试题_第6张图片
C语言编程入门基础学习—完美洗牌算法之面试题_第7张图片

你可能感兴趣的:(C语言编程入门基础学习—完美洗牌算法之面试题)