Alternate to 2D array in C#

Viewed 2886

I have to store two types of information in any data structure for what I came up with the scrap solution of 2D array in C#. I have to store as:

  • number of cluster in int data type
  • cluster membership count in int data type

If I use a 2D array as:

Int32[,] _clusterMembership = new Int32[10, 10];

But the issue here is:

  • I don't know what total number of cluster will be?
  • I don't know what number of members each cluster will have?

So the question is: How can I manage to store this information in C# ?

ADDENDUM
I have to use answer from this question here in this method as:

   public static List<Cluster> DP_Cluster(List<string> _customer, double _alpha)
    {
        var _currentClusters = 0;     // current number of clusters i.e. "k"
        var _memberNumber = 0;    // running member number i.e. "n"
        //var _dic = new Dictionary<int, List<string>>();
        var _probOld = 0.0;
        var _probNew = 0.0;


        List<Cluster> myClusters = new List<Cluster>();
        Cluster cluster = new Cluster(_currentClusters += 1);
        cluster.Members.Add(new ClusterMember { Name = _customer.ElementAt(_memberNumber) });
        myClusters.Add(cluster);

        //_dic.Add(_currentClusters, _customer.ElementAt(_memberNumber));
        _currentClusters += 1;

        for(int _i = 1; _i < _customer.Count - 1; _i++)
        {
            if( _i <= _currentClusters)
            {
                _probOld = myClusters[_i].Members.Count / ((_i+1) - 1 + _alpha);
            }
            else
            {
                _probNew = _alpha / ((_i+1) - 1 + _alpha);
            }

            if(_probNew > _probOld)
            {
                // Add _customer.ElementAt(_memberNumber+=1) to New Cluster
                Cluster cluster = new Cluster( _currentClusters += 1 ); // Here is an error as we defining same name for another cluster
                myClusters.Add(cluster);
            }
            else
            {
                // Add _customer.ElementAt(_memberNumber+=1) to Old Cluster
            }
        }

        return myClusters;
    }
  • How should I update my method to get desired results?
5 Answers
Related