用C语言对数组内元素乱序排列并输出

现在有一个数组,数组内存放8个short型元素,比如{1,3,9,6,10,4,28,51}现在想把这八个数据随机排列并输出所有排列结果,那么就应该有2^8=32个结果输... 现在有一个数组,数组内存放8个short型元素,比如{1,3,9,6,10,4,28,51}
现在想把这八个数据随机排列并输出所有排列结果,那么就应该有2^8=32个结果输出。
我想问一下怎么可以实现这个程序。注意:数组内元素数据是开始就定好的,不能使用random()去随机产生
谢谢~~
问题解决会继续+分
8!个输出。。我错了。。
求完整源代码。。
展开
 我来答
百度网友bd6b4b5
2011-05-11 · TA获得超过252个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:192万
展开全部
#include<stdio.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;i<8;i++)
for(j=0;j<8;j++)
if(j!=i)
for(k=0;k<8;k++)
if((k!=i)&&(k!=j))
for(l=0;l<8;l++)
if((l!=i)&&(l!=j)&&(l!=k))
for(m=0;m<8;m++)
if((m!=i)&&(m!=j)&&(m!=k)&&(m!=l))
for(n=0;n<8;n++)
if((n!=i)&&(n!=j)&&(n!=k)&&(n!=l)&&(n!=m))
for(x=0;x<8;x++)
if((x!=i)&&(x!=j)&&(x!=k)&&(x!=l)&&(x!=m)&&(x!=n))
for(y=0;y<8;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\n",a[i],a[j],a[k],a[l],a[m],a[n],a[x],a[y]);
}
printf("%d\n",xx);
}
方法其实很简单,多动脑多写
znyfqv2470
2011-05-12 · TA获得超过1542个赞
知道小有建树答主
回答量:790
采纳率:100%
帮助的人:457万
展开全部
方法1:比较笨的办法是先排好。再在里面找。看是原来的第几个。 (代码我就不写了。)
方法2:有一个很快的方法,就是用快速排序排,
如果你深入的了解了快排,那么这个就很简单了。而且效率很高。
我给你写代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永远幸福juan
2011-05-19
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
方法1:比较笨的办法是先排好。再在里面找。看是原来的第几个。
(方法2:有一个很快的方法,就是用快速排序排,
如果你深入的了解了快排,那么这个就很简单了。而且效率很高。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
麦斯维尔123
2011-05-11
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
可以用遍历的方法,结果应该有8!个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式