将数组中的数据进行分类
我想将一个数组中相同数据归为一类,
比如说int data[10] = {1, 1, 4, 3, 9, 4, 0, 2, 1, 0};
将是1的归为一类,是4的归为一类 等等。
我希望能够得到另外的数组,每一行代表一类,每一列是该类中成员在data数组中的下标。
期待有高人,C或者Matlab都行。。
[解决办法]
每一列是该类中成员在data数组中的下标,每一列还有保存有几个这样的下标才行吧
如 第一行表示1,则每一列为 0,1, 8.但如果你不保存有几个这样的数,你以后怎么访问?
[解决办法]
用list,数组不行,每一类的数量不一样
[解决办法]
用multimap就可以了。你遍历第一个数组,建立个multimap,KEY为你的归类的名字,value为具体的数据。然后按节点输出MAP到第二个数组就可以了
[解决办法]
定义一个特殊的数据结构吧。首节点里存放类型和该类型数据的个数,然后用一个指针指向后续节点,后续节点存放在数组中的位置。首节点可以再定义一个指向下方的指针,用另外的一个列表将类型节点串接起来。像数据结构里面的十字链表的。
[解决办法]
如果要设计简单,搬出STL来就可以了。
如果要自己写,那不能使用二维数组,应该使用二叉树或是类二叉树来表达。因为二维数组的每一行都有同样多的列数,不适合你所要解决的问题。
二叉树的话,你可以用第一层的brother指针连接所有的类别,而child指针则指向各个记录data下标的单元。