class A{
public:
int num;
}
int main{
A object1;
object1.num = 2;
A object2;
object2.num = 1;
A object3;
object3.num = 3;
.......
}
假如我现在需要从小到大排序,就需要返回object2,object1,object3。
谢谢大家了
这是完整代码:
#define _CRT_SECURE_NO_WARNINGS
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
class A {
public:
int idx;//序号
int num;//数字
};
int main() {
///生成排序对象
int numbers[] = { 48,1,77,8,31,47,2,6,90 };//原始数据
int length = sizeof(numbers) / sizeof(numbers[0]);
A* object = new A[length];
cout << "原始数据:\n";
for (int i = 0; i < length; i++)
{
object[i].idx = i;
object[i].num = numbers[i];
printf("Object_%d.num = %d\n", object[i].idx, object[i].num);
}
//排序算法:
//比较对象数组中每个对象的num值是否大于下一个对象的num值,
//如果大于,则交换位置,然后不断反复直到没有发生交换位置的情况,
//即得到答案。
bool isfinished = false;
while (!isfinished)
{
isfinished = true;
for (int i = 0; i < length - 1; i++)
{
if (object[i].num > object[i + 1].num)
{
A tmpobj = object[i];
object[i] = object[i + 1];
object[i + 1] = tmpobj;
isfinished = false;
}
}
}
cout << "排序后:\n";
for (int i = 0; i < length; i++)
{
printf("Object_%d.num = %d\n", object[i].idx, object[i].num);
}
char quitchar=getchar();
return 0;
}
可以使用java中的Collections.sort()。大概可以看一下下面链接
https://blog.csdn.net/qq_23179075/article/details/78753136
用qsort排序 https://blog.csdn.net/zhao888789/article/details/79186619
你可以看到它的例子,自己写一个类似cmp_int cmp_char的方法,将你的比较规则作为函数,传进取
主要是对象的名字你打算怎么算,你类里面应该加个名字,以区分类对象,再做个接口显示名字,之后做个对象数组每个对象名字不一样,然后就按num 进行排序,和普通变量数组排序一样,做个起泡排序,然后输出各个对象名称就行了。
List<A> list = new ArrayList<> ();
list.add(object1);
list.add(object2);
list.add(object3);
list.sort(Comparator.comparing(A::getNum));
list.stream().forEach(item -> System.out.println(item.getNum()));
Map
然后根据这个排序 取对应的object'