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