2016-12-10 5 views
0

Привет, я знаю, как работает couting sort, как его реализовать, Но возможно ли реализовать его в классе, который получил 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.

что-то вроде count [A [i] -> m_echeance + 1] ++;

  1. Получить кумулятивные частоты для массива count.

  2. Скопируйте объекты в вспомогательную решетку на основе накопленных частот.

  3. Скопируйте обратно объекты из вспомогательного массива в исходный массив.

Надеюсь, это поможет!