你知道我知道couting sort是如何工作的,如何实现它,但是有可能在一个有3个attributs的类上实现它,需要在特定的attribut上计算整个DisjointSet。
如果是这样,让我说我有这个课程:
class myStructure {
public:
int m_id = -1;
myStructure* m_parent = NULL;
int m_sortie = -1;
int m_echeance = -1;
myStructure() {}
myStructure(int id, myStructure* parent, int sortie, int echeance)
: m_id(id), m_parent(parent), m_sortie(sortie), m_echeance(echeance)
{ }
};
如何在m_echance上实现计数排序。 感谢
答案 0 :(得分:0)
当然,您可以应用计数排序。 它适用于任何可以用整数映射的字段。通常,如果值的范围(在您的情况下为m_echeance)很小,则应使用计数排序。 以下是高级方法 -
假设您的对象存储在数组A []
中m_echeance的范围是[0,R-1]
制作一个计数数组。
循环遍历数组A,以计算具有不同m_echeance值的对象的频率。
类似count [A [i] - > m_echeance + 1] ++;
获取计数数组的累积频率。
根据累积频率复制辅助阵列中的对象。
将辅助数组中的对象复制回原始数组。
希望它有所帮助!