本文共 674 字,大约阅读时间需要 2 分钟。
网站有一篇博客探讨了关于洗牌的三种方法,其中一种如题所述,现贴代码如下:
const size_t MAXLEN = 10;const char TestArr[MAXLEN] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};static char RecurArr[MAXLEN] = {0};static int cnt = 0;void ShuffleArray_Recursive_Tmp(char *arr, int len){ if (cnt>MAXLEN || len<=0) { return; } int pos = rand()%len; RecurArr[cnt++] = arr[pos]; if (len==1) return; ShuffleArray_Recursive_Tmp(arr, pos); ShuffleArray_Recursive_Tmp(arr+pos+1, len-pos-1);}void ShuffleArray_Recursive(char *arr, int len){ memset(RecurArr, 0 , sizeof(RecurArr)); cnt = 0; ShuffleArray_Recursive_Tmp(arr, len); memcpy(arr, RecurArr, len);}void print(char *arr, int len){ int i; for (i=0; i
还是有点疑问,慢慢看。。
转载地址:http://wzkqi.baihongyu.com/