计数对一组进行排序

时间:2016-12-10 21:47:15

标签: c++ sorting data-structures counting counting-sort

你知道我知道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上实现计数排序。 感谢

1 个答案:

答案 0 :(得分:0)

当然,您可以应用计数排序。 它适用于任何可以用整数映射的字段。通常,如果值的范围(在您的情况下为m_echeance)很小,则应使用计数排序。 以下是高级方法 -

假设您的对象存储在数组A []

m_echeance的范围是[0,R-1]

  1. 制作一个计数数组。

  2. 循环遍历数组A,以计算具有不同m_echeance值的对象的频率。

  3. 类似count [A [i] - > m_echeance + 1] ++;

    1. 获取计数数组的累积频率。

    2. 根据累积频率复制辅助阵列中的对象。

    3. 将辅助数组中的对象复制回原始数组。

    4. 希望它有所帮助!