65,208
社区成员
发帖
与我相关
我的任务
分享template <typename ElemType>
void MySeqTree<ElemType>::RandCreat()
{
srand((unsigned)time(NULL));
finalIndex=rand()%9+1;
const int n=26; //
char SS[n]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
if(finalIndex!=-1)
{
initialAddress=new ElemType[finalIndex+1];
assert(initialAddress!=0);
for(int i=0;i<=finalIndex+1;++i)
{
int j;
j=rand()%26;
initialAddress[i]=SS[j];
}
}
}
int j = 0;
for(int i=0;i<=finalIndex+1;++i)
{
j = (j + (1 + rand()%25))%26;
initialAddress[i]=SS[j];
}
这样改如何?类似哈希表的散列法#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int d[6];
int i,n,a,b,t;
int c,j;
void main() {
srand(time(NULL));
printf("shuffle 0..n-1 demo\n");
for (n=1;n<=5;n++) {/* 测试1~5个元素 */
printf("_____n=%d_____\n",n);
j=1;
for (c=1;c<=n;c++) j=j*c;/* j为n! */
j*=n*2;
for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
for (i=0;i<n;i++) d[i]=i;/* 填写0~n-1 */
for (i=n;i>0;i--) {/* 打乱0~n-1 */
a=i-1;b=rand()%i;
if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
}
printf("%04d:",c);
for (i=0;i<n;i++) printf("%d",d[i]);
printf("\n");
}
}
printf("shuffle 1..n demo\n");
for (n=1;n<=5;n++) {/* 测试1~5个元素 */
printf("_____n=%d_____\n",n);
j=1;
for (c=1;c<=n;c++) j=j*c;/* j为n! */
j*=n*2;
for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
for (i=1;i<=n;i++) d[i]=i;/* 填写1~n */
for (i=n;i>1;i--) {/* 打乱1~n */
a=i;b=rand()%i+1;
if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
}
printf("%04d:",c);
for (i=1;i<=n;i++) printf("%d",d[i]);
printf("\n");
}
}
}
vector<int> v;
for(int i=0;i<=finalIndex+1;++i)
{
int j;
j=rand()%26;
while(find(v.begin(); v.end(); j) != v.end()) j=rand()%26;
v.push_back(j);
initialAddress[i]=SS[j];
}