???????????????????????????????????????????????????????

??????????????????? ShuffleArray ()??????????????????N????????? ShuffleArray ()?????????????????????????????????????????????????????????β??? ShuffleArray ()??????????????????????ж???????????????????????????????????????????????д?????????????????????????????????????????????? QA ??????????????——?????????????????????

????????????????????????????????????????????????????????????????????

?????????????

??????????????????????????????????????????????????????????????+???????????????????2???ɡ???????????????????????????????????????£?????????? Javascript д??????????????????C??????£???

//?????????
constsize_t MAXLEN =10;
constcharTestArr[MAXLEN] = {'A'??'B'??'C'??'D'??'E'??'F'??'G'??'H'??'I'??'J'};

staticcharRecurArr[MAXLEN]={0};
staticintcnt =0;
voidShuffleArray_Recursive_Tmp (char* arr??intlen)
{
if(cnt > MAXLEN || len <=0){
return;
}

intpos = rand () % len;
RecurArr[cnt++] = arr[pos];
if(len==1)return;
ShuffleArray_Recursive_Tmp (arr?? pos);
ShuffleArray_Recursive_Tmp (arr+pos+1?? len-pos-1);
}

voidShuffleArray_Recursive (char* arr??intlen)
{
memset (RecurArr??0??sizeof(RecurArr));
cnt=0;
ShuffleArray_Recursive_Tmp (arr?? len);
memcpy (arr?? RecurArr?? len);
}

voidmain ()
{
chartemp[MAXLEN]={0};
for(inti=0; i    {
strncpy (temp?? TestArr?? MAXLEN);
ShuffleArray_Recursive ((char*) temp?? MAXLEN);
}
}

????????????Σ?????????????£?

????Σ?D C A B H E G F I J
????Σ?C A B D H G E F J I
?????Σ?A B H F C E D G I J
????Σ?B A H G E C D F J I
????Σ?F B A D C E H G I J

???????? Hack ??

???????????????? hack ????????????????????????????

intcompare (constvoid*a??constvoid*b )
{
returnrand ()%3-1;
}

voidShuffleArray_Sort (char* arr??intlen)
{
qsort ( (void*) arr?? (size_t) len??sizeof(char)?? compare );
}

???????и????Σ??о????????????£?

????Σ?H C D J F E A G B I
????Σ?B F J D C E I H G A
?????Σ?C G D E J F B I A H
????Σ?H C B J D F G E I A
????Σ?D B C F E A I H G J

????????????????????