作者TonyQ (骨头)
看板java
标题Re: [问题] 有另外的资料结构来代表大型的多维阵列吗?
时间Thu Feb 1 20:08:06 2007
※ 引述《PsMonkey (痞子军团团长)》之铭言:
: ※ 引述《chiachenyen (阿成)》之铭言:
: : 近来需要写一支程式,有一个小困扰~
: : 程式需要计算数十维度的资料,若宣告成:
: : int record[][][][][][][][][][]=new int[25][25][25][25][25][25][25][25][25][25];
: : 显然得,不可行~
: : 这麽大的多维阵列,其实也可能只有100个elements会用到(或是更少),
: : 但因为这些elements都会分散在这个多维阵列之中,我有考虑过用vector来作,
: : 也就是说,用"编号"的方式来作,这麽一来,如果只需100个elements,
: : 也就真正的只需100个~
: : 如了这个外,不晓得各位先进还有其他建议的方法吗~?
: 麻烦请 post 成 BBS 方便看 & 方便引言的文章格式
: 只宣告一个一维阵列
: 然後写个 method 接参数,就可以取出你要的
: 这道理其实很简单,假设一个二维 3*4 的矩阵
: 0 1 2
: 3 4 5 = 0 1 2 3 4 5 6 7 8 9 10 11
: 6 7 8
: 9 10 11
: 你要取第三行第二个(就是 [2][1])7
: 其实就是一维阵列的 [2*3+1]
: 其他,就是麻烦而已,不难
痞子你好坏。XD
以他的例子来看,假设只是三维各长25的阵列,
你这个一维阵列长度也要15625之多。XD
他的问题比较接近稀疏矩阵,属於范围大但是资料少的问题。
(十几维度的资料,却只有一百笔这样。)
底下是良葛格对稀疏矩阵的介绍 觉得可以值得参考
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/SparseMatrix.htm
如果以原PO的想法来看,hash也是个不错的选择,
个人觉得痞子提的方式是个不错的hash法,因为不会重复。
只是我会比较想用 Map<String,Integet> 做,而不会想用一维阵列。(逃)
--
String temp="relax"; | Life just like programing
while(buringlife) String.forgot(temp); | to be right or wrong
while(sleeping) brain.setMemoryOut(); | need not to say
stack.push(life.running); | the complier will
stack.push(scouting.buck()); | answer your life
stack.push(bowling.practice()); | Bone
everything
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.27.68
1F:推 PsMonkey:讨厌~死相~ 说人家好坏 >////< 02/01 20:15