今天,嗨壳技术分享网给大家整理一些c语言数组乱序内容。
C语言中如何将数组乱序
可以这样:
srand(time(0));
for(i=0;iN;i++)
{
m=rand()%9;
n=rand()%9;
t=a[m];
a[m]=a[n];
a[n]=t;
}
就是每次生成两个0到8之间的随机数,然后以它们作为下标,交换两个位置的数字,只要N足够大,应该能够达到要求
C语言删除数组中的最小值(不唯一),数组是乱序的?
下面是数组中删除最小值的oj代码:
#include stdio.h
int main()
{
int i,N,min,a[1016];
scanf(“%d”,N);
for(i=0;iN;i++)
{
scanf(“%d”,a[i]);
if(a[i]min||!i) min=a[i];
}
for(i=0;iN;i++)
if(a[i]!=min) printf(“%d
”,a[i])
return 0;
}
怎样用C语言打乱一个已排序的数组
//使用随机数交换的形式打乱数组。随机生成一个随机数组下表,然后进行交换,达到打乱的目的。
#include stdio.h
#include iostream
#includestdlib.h
#includetime.h
using namespace std;
int main()
{
int a[10];
for(int i=0;i10;i++)
{
a[i]=i+1;
}
printf(“顺序输出:”);
for(int i=0;i10;i++)
{
printf(“%d “,a[i]);
}
srand((int)time(NULL));
for(int i=0;i10;i++)
{
swap(a[i],a[rand()%10]);
}
printf(“
打乱顺序后:”);
for(int i=0;i10;i++)
{
printf(“%d “,a[i]);
}
//system(“pause”);
}
c语言如何随机打乱数组
int a[] = {3,5,7,1,4};
// 本程序考虑时间复杂度最小情况的乱序算法,O(t)=len-1
// 算法模仿彩票摇号,从全集中先取一个为第一位,再在剩余集合中取出一个为第2位,…
// 直至最后一个,只是考虑空间利用,已排序集合利用全集的空间。
int len=sizeof(a); // 全集元素数量
srand(unsigned(time(NULL))); // 摇号机准备
for(int i=len;i1;i–) // 从全集开始摇号,直至只剩一个,已排在最后
{
int cur=len-i+(rand()%i); // 在剩余集合中摇号
int tmp=a[len-i]; // 当前序号位置挪空
a[len-i]=a[cur]; // 摇出的彩球放入当前序号
a[lcur]=tmp; // 放好剩余的彩球
}
用C语言对数组内元素乱序排列并输出
#includestdio.h
int main()
{
int xx=0;
int a[8]={1,3,9,6,10,4,28,51};
int i,j,k,l,m,n,x,y;
for(i=0;i8;i++)
for(j=0;j8;j++)
if(j!=i)
for(k=0;k8;k++)
if((k!=i)(k!=j))
for(l=0;l8;l++)
if((l!=i)(l!=j)(l!=k))
for(m=0;m8;m++)
if((m!=i)(m!=j)(m!=k)(m!=l))
for(n=0;n8;n++)
if((n!=i)(n!=j)(n!=k)(n!=l)(n!=m))
for(x=0;x8;x++)
if((x!=i)(x!=j)(x!=k)(x!=l)(x!=m)(x!=n))
for(y=0;y8;y++)
if((y!=i)(y!=j)(y!=k)(y!=l)(y!=m)(y!=n)(y!=x))
{
xx++;
printf(“%d %d %d %d %d %d %d %d
”,a[i],a[j],a[k],a[l],a[m],a[n],a[x],a[y]);
}
printf(“%d
”,xx);
}
方法其实很简单,多动脑多写
用C语言怎样打乱一组数据?
#pragma once
#include iostream
#include Windows.h
using namespace std;
#pragma comment( lib, “winmm.lib” )
int main()
{
//定义一个数组(自己随便定义,这里以10个大小的数组为例)
const int iSum = 10;
int iAry[iSum] = {3,7,5,87,23,1,65,8,51,64};
//定义一个数组用来保存打乱顺序后的数
int iDistrubAry[iSum] = {0};
//播随机种子(以便每次随机的值有相等的机会)
srand(timeGetTime());
//每次随机的不相同的数存到这个数组里(以便下次随机时判断随机的数是否已经随机过了)
int iRandomData[iSum] = {0};
//将iRandomData元数都赋初值为-1,表示没有产生一个随机数
for ( int i=0; iiSum; i++ )
{
iRandomData[i] = -1;
}
//共产生不同的随机的个数
int iRandomSum = 0;
//打乱这个数组
for ( int i=0; iiSum; i++ )
{
//随机一个数
int iRandom = rand()%iSum;
//判断iRandomSum是否为0,是0的话表示没有随机过任何数,就不用查询是否随机到这个数了
if ( iRandomSum != 0 )
{
//用来判断是否连续随机(当随机的数与之前随机的有重复时就连续随机)
for ( int i=0; iiRandomSum; i++ )
{
if ( iRandom == iRandomData[i] )
{
iRandom = rand()%iSum;
//i要赋值为-1,表示重新查询是否与以前随机的数重复
i = -1;
}
}
}
//将产生的随机数添加到RandomData里面
iRandomData[iRandomSum] = iRandom;
//将随机的数作为原来数组的索引,取出原来数组此索引的值保存在打乱后的数组中
iDistrubAry[iRandomSum] = iAry[iRandom];
//将iRandom加1,表明已经打乱好了一个数
iRandomSum++;
}
//显示未打乱的数组
cout”未打乱的数组:”;
for ( int i=0; iiSum; i++ )
{
coutiAry[i]” “;
}
coutendl;
//显示打乱后的数组
cout”打乱后的数组:”;
for ( int i=0; iiSum; i++ )
{
coutiDistrubAry[i]” “;
}
coutendl;
system( “pause” );
}
以上【 c语言数组乱序 】是嗨壳技术分享网(www.heikehao.com)编辑整理。嗨壳技术分享网包含技术投稿、C语言、Excel、Java、Linux、网络安全和账号安全等丰富的栏目,并分享一些互联网安全技术知识和安全防护经验,帮助网友注重网络安全,让网络安全不再是问题。
原创文章,作者:语言我知,如若转载,请注明出处:https://www.heikehao.com/11090.html