c++数组的大小的比较,排序的算法

希望看完题!inta{8,5,3,2};intb{8,4,3,2};intc{6,5,3,1};intd{6,5,3,2};已知:四个数组a,b,c,d数组内元素的大小已... 希望看完题!
int a{8,5,3,2};
int b{8,4,3,2};
int c{6,5,3,1};
int d{6,5,3,2};
已知:四个数组a,b,c,d 数组内元素的大小已从大到小排好序了。
要求:依次比较四个数组相同下标的元素(下标从0到3),哪个数组元素大,则该数组就大,若该下标元素大小相同,则比较下一个下标的元素大小来排出数组大小!
希望:能详细的写出算法!
展开
 我来答
china1486
2014-08-20 · 超过24用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:47.7万
展开全部
首先对于两个数组的比较应该不难想:
假设是a[]和b[]吧
顺次比较a数组和b数组中的每一位,如果对于当前这一位a[i]>b[i]显然a大,如果b[i]>a[i]显然b大,如果a[i]==b[i]就要继续比较下一位了。如果比较到最后一位还没有结果,就是两个数组相等
处理完两个数组的比较,然后就可以处理多个了
可以当成一个集合来考虑,因为可以比较两个元素(就是数组)的大小,就可以排出来了。相当于一个数组里有很多数要排序一样。任意什么排序算法都可以了
求采纳
更多追问追答
追问
能详细的写下算法吗?实在难以理解,谢谢!可以追加财富值!
追答
我写的就是算法吧……或者你要具体的代码?

#include
struct element{
int a[5];
}set[5];
int judge(element a,element b)//判断两个数组的大小
{
for (int i=1;ib.a[i])return 1;
if (a.a[i]<b.a[i])return -1;
}
return 0;
}
int main()
{
set[1].a[1]=8;set[1].a[2]=5;set[1].a[3]=3;set[1].a[4]=2;
set[2].a[1]=8;set[2].a[2]=4;set[2].a[3]=3;set[2].a[4]=2;
set[3].a[1]=6;set[3].a[2]=5;set[3].a[3]=3;set[3].a[4]=1;
set[4].a[1]=6;set[4].a[2]=5;set[4].a[3]=3;set[4].a[4]=2;
for (int i=1;i<4;i++)
for(int j=i+1;j<=4;j++)
if (judge(set[i],set[j])==1)
{
element t=set[i];
set[i]=set[j];
set[j]=t;
}
for (int i=1;i<=4;i++)
{
for (int j=1;j<=4;j++)
printf("%d ",set[i].a[j]);
printf("\n");
}
}
写了个具体的……用冒泡排序实现,从小到大输出排序完的数组
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dzmcobk
2014-08-21 · TA获得超过748个赞
知道小有建树答主
回答量:431
采纳率:76%
帮助的人:125万
展开全部
int pd(int a[],int b[],int n){    //如果a[]>b[] 返回1
    int i = 0;                    //如果a[]<b[] 返回-1
    for(i = 0;i < n;i ++){        //如果a[]=b[] 返回0
        if(a[i] > b[i])
            return 1;
        if(a[i] < b[i])
            return -1;
    }
    return 0;
}

给你个判断两个数组大小的函数,你可以用冒泡或者选择排序法完成排序

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式