当前位置:编程学习 > C#/ASP.NET >>

100分,求一个分组算法

2 4 6
1 3 5
1 7 9
3 4 5
1 3 8
2 9 6
2 5 7

分组后,得到:
2 4 6
2 9 6
2 5 7
1 3 5
1 7 9
1 3 8
3 4 5
算法需要快,加入有10w的数据量时,也能很快的分组完成,谢谢 --------------------编程问答-------------------- 规则? 按照第一个数分组? --------------------编程问答-------------------- 不是很明白你的意思 --------------------编程问答--------------------
引用 1 楼 q107770540 的回复:
规则? 按照第一个数分组?


是这样吗? --------------------编程问答-------------------- 你的数据是用什么存储的? int[,,]? --------------------编程问答-------------------- 按单双位置分组? --------------------编程问答-------------------- 毫无规律。楼主。 --------------------编程问答-------------------- 这个是有规律的,请看:
2 4 6
1 3 5
1 7 9
3 4 5
1 3 8
2 9 6
2 5 7
这是一个table,排序后,就是将数据,相同的部分放在了一起,但是,可以看到并没有排序,我琢磨是不是可以求十字链表来解决这个分组。
忘大家给点意见 --------------------编程问答-------------------- 上边我写错了几个词:
这个是有规律的,请看:
2 4 6
1 3 5
1 7 9
3 4 5
1 3 8
2 9 6
2 5 7
这是一个table,分组后,就是将数据,相同的部分放在了一起,但是,可以看到并没有排序,我琢磨是不是可以求十字链表来解决这个分组。
忘大家给点意见 --------------------编程问答-------------------- 直接按第一个字段排序不可以吗? --------------------编程问答-------------------- 依然不知道是啥玩意 规则说清楚  --------------------编程问答-------------------- 10w的数据量,一般的算法估计快不了。你这个如果只是按照第一列去分组的话还能稍微快一点点。如果三列都需要分组,那就需要3×2次循环才行了。。。。。。。 --------------------编程问答-------------------- 还是要把分组规则说清楚! --------------------编程问答-------------------- 额,看规则好像就是按字符串排序啊,那就拼成一个字符串就ok

代码不写了,很简单的东西 --------------------编程问答-------------------- 如果是数据库里面的数据还可以用sql语句去实现。。。。 --------------------编程问答-------------------- 我来揣测一下规律,先按第一位来分组,小数(1**)放中间大的(2**和3**)放两端,在组内部大数放中间(2 9 6),小数放两端 --------------------编程问答-------------------- 规则是不是按照相同数据分组?从百位到十位再到各位。 --------------------编程问答-------------------- 可能我真的没有说清楚,我自己于是又整理了一下:
c1 c2 c3
----------
2  4  6
1  3  5
1  7  9
3  4  5
1  3  8
2  9  6
2  5  7

分组后,得到:
c1 c2 c3
---------
2  4  6
2  9  6
2  5  7
1  3  5
1  7  9
1  3  8
3  4  5

分组前的第一条记录还是分组后得第一条记录 2 4 6,没变,分组前的第6条记录到了分组后的第2条记录2,9,6
第7条到了第3条,第2条变成了分组后的第4条...类似,按照列进行了group by ,我是想在二维数组里实现,不想借助数据库

--------------------编程问答-------------------- 谢谢朋友们的关心 --------------------编程问答-------------------- 我大概查了一下,用稀疏矩阵和十字交叉链表实现最好,但我具体还真不知道怎么去实现 --------------------编程问答-------------------- 三个值为一组,之后根据第一个值做hash,每个hash里面是一个链表,依次记录得到的节点!!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,