2016-12-10 13 views
0

こんにちは私はどのように実装するのかを知っているが、それは3つのattributsを持っており、特定の属性にdisjointSet全体をソートする必要があるクラスで実装することは可能ですか?Counting並べ替えセット

もしそうなら、私はこのクラスを持って言うことができます:

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)が小さい場合は、ソートを使用する必要があります。以下 はthat-

はのは、あなたのオブジェクトがm_echeanceの配列A []

範囲に格納されているとしましょう行うにはハイレベルのアプローチがある[0、R-1]

  1. は、カウントを確認していますアレイ。

  2. 配列Aをループして、異なるm_echeance値を持つオブジェクトの頻度をカウントします。

count [A [i] - > m_echeance + 1] ++のようなもの;

  1. カウント配列の累積頻度を取得します。

  2. オブジェクトを累積頻度に基づいて補助配列にコピーします。

  3. オブジェクトを補助配列から元の配列にコピーバックします。

希望します。

関連する問題