C++类对象数组按某一属性排序输出,而不影响自己本身存放的顺序该怎么做?

我们班布置的一个课程设计,是做一个小MIS,关于存放学生成绩的数据库。我建了一个类,用对象数组存储信息,而学号就是数组下标。其中需要实现的一个功能就是按某一成绩排序输出,如果用自定义sort排序的话学号就会随之改变,所以我不知道该怎么处理。请求大神指教!!

你可以这样。

新建一个数组,将原数组数据全部复制到该数组里。

然后双重for循环遍历这个新的数组。

最外层for循环是用来输出成绩的最大值。

最里层for循环是用来寻找成绩的最大值,当找到最大值,赋值给一个遍历,然后将数组的最大值赋值一个负数。

依次这样循环,就可以将成绩顺序输出了。

struct student
    {
        string id;
        string name;
        int mathPoint;
        int englishPoint;
    }

然后排序算法里面比较成绩来交换顺序

可以吧学号也做一个数组,排序的时候比较的是成绩的大小,但是调整的时候调整序号数组就可以了。

比如你成绩数组int score1[10],int xuehao[10],

先复制一个成绩数组int scoretmp[10];把score1的数据拷贝到scoretmp中,

排序比较的时候是

if(scoretmp[j] > scoretmp[j+1] )

{

tmp = scoretmp[j];

scoretmp[j] = scoretmp[j+1];

scoretmp[j+1] = tmp;

tmp = xuehao[j];

xuehao[j] = xuehao[j+1];

xuehao[j+1] = tmp;

}

这样不管用哪个成绩排序,调整的都是学号数组。如果用科目2的成绩排序时,把学号下标重置回去,在重新用上面的逻辑排序就是了。

你得将学号和成绩组成数据结构,然后数据结构形成数组,按成绩排序

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

如果是C++的话,可以使用sort函数。假设科目1的成绩数组是cj1[10],对应的学号数组是int xh[10],sort函数使用方法如下:

sort(xh,xh+10,[&](const int& a, const int& b) {
		return (cj[a] > cj[b]);
	});

这样就会根据成绩大小对学号数组进行排序。