2016-12-10 32 views
0

你好,我知道如何couting排序工作,如何實現它,但是有可能實現它在一個有3個屬性,需要計數排除整個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]

  1. 做一個計數陣列。

  2. 循環遍歷數組A來計算具有不同m_echeance值的對象的頻率。

like count [A [i] - > m_echeance + 1] ++;

  1. 獲取count數組的累積頻率。

  2. 根據累積頻率複製輔助數組中的對象。

  3. 將對象從輔助數組複製回原始數組。

希望它有幫助!