vendredi 3 mai 2019

Merging two groups

I have lots of groups, each group has min range and max range they can fit into. these ranges are overlapping between different group

For eg

    Group1  Min Range 3.125 , Max Range 3.5
    Group2  Min Range 3.25 , max Range 3.75
    Group 3 Min Range 3.5, max range 4.0

I need to merge these groups to form minimum number groups.

Like

Group1  Min Range 3.125 , Max Range 3.5
              Item 1 value 3.125
              Item 2 value 3.3
              Item 3 value 3.5

Group2  Min Range 3.25 , max Range 3.75
              Item 1 value 3.25
              Item 2 value 3.3

I can merge these two group in Group1.

This is what I am doing

for( size_t TopIndex = 0; TopIndex < GroupVector.Size(); TopIndex++)
{
    Group& CurrentGroup = GroupVector[TopIndex];
    for( size_t InnerIndex = TopIndex +1; InnerIndex < GroupVector.Size(); InnerIndex++)
    {
        Group& InnerGroup  = GroupVector[InnerIndex];
        MergeGroup(CurrentGroup,InnerGroup);
    }
}

In MergeGroup,

1.  Move items from Group 1 to Group 2 , Save total number of group after merge (I will stop if number of group is 1)
2.  Move items from Group 2 to Group 1 , Save total number of group after merge
3.  Compare number of group form step 1 &2  and accept an option which results in less number of groups.

My number of groups to merge is large and I am trying to find if there is any better way of doing this.

Aucun commentaire:

Enregistrer un commentaire