2012年6月6日星期三

分裂的神经

技术:
继续在X项目花费零碎时间。这几天一直纠结于一个问题,抽象成计算机语言描述就是:
一个二级int hashmap(key为int),即hashmap的value是另一个int hashmap, 如何按照规则A输出其中指定起始位置,指定个数的元素,元素在第二级hashmap的value中。
规则A:按照元素所属的hashmap间隔排列,即一级hashmap含10个二级hahsmap,若输出10个元素,则10个元素分属10个hashmap;
直觉的实现应该是全部将元素输出到数组,按照上述规则排序并输出。这种方法效率非常低,增加了一倍的空间存储临时元素,并耗费大量CPU排序,当元素个数巨大时,这样的算法对系统的影响是非常大的。
今天专门抽出时间仔细思考了这个问题,用了一种方法简洁的实现这个需求:用vector代替第二级hashmap,这样输出元素时,记录每次的输出的vector下标,即可近似的用二维数组的输出规则输出元素。这样的实现只用了20行左右代码,效率也相当高,算法复杂度等同于顺序迭代访问每个元素。这里的要点在于用vector代替原先hashmap。
有时,针对某些问题,用另外一种思维方式会取得意想不到的效果。

胡思:
重又将20余年前的历史在wiki上回顾了一次。每次看都有不同的感受,不同的思考,特别是在读过《1984》,《俄国人》之后。李贺诗言”临岐击剑如铜吼“,大概就是目前这种感受。
村上春树也在《1Q84》中描绘了一个初始以社会主义为目的后逐渐演变为类邪教的组织。大约持统一思想论的组织,无论高尚与否,大都最后都会异变。
“没人要和你玩平等的游戏 每个人都想要你心爱的玩具”——《亚细亚的孤儿》

没有评论:

发表评论