【发布时间】:2014-05-08 21:25:58
【问题描述】:
我是 Haskell 的新手,我想知道最有效的方法来合并任意数量的项目的任意数量的列表。这是示例数据:
LIST 1: steve
2014-01-20 | cookies | steve
LIST 2: chris
2014-02-05 | cookies | chris
LIST 3: mark
2014-09-30 | brownies | mark
2014-03-30 | candy | mark
2014-05-12 | pie | mark
LIST 4: anthony
2014-05-18 | cookies | anthony
2013-12-25 | fudge | anthony
LIST 5: andy
2014-10-04 | cookies | andy
LIST 7: john
2014-06-19 | pie | john
RESULTING LIST
2014-10-04 | cookies | andy chris steve anthony
2014-09-30 | brownies | mark
2014-06-19 | pie | john mark
2014-03-30 | candy | mark
2013-12-25 | fudge | anthony
请注意,这些列表都是以人为中心的,可能按日期排序,也可能不排序,结果需要合并先前的列表,分组并创建一个列表,其中甜点是唯一的,但有一个组成人员的列表吃了,按日期倒序排列。
【问题讨论】:
-
听起来你真的想要一个数据库。此外,我会警惕在基准测试之前尝试“最高性能”的算法。正如许多人在我之前所说的那样,早期优化是不好的。让它工作,然后运行分析器来找出瓶颈所在,优化这些点,然后重复直到你对性能感到满意。
-
感谢您的回复。我已经用 Java 和 C++ 对此进行了编码,并得到了合理的结果。我已经尝试在 Postgres 中执行此操作,但无论我尝试了什么,它都非常缓慢。 (创意索引等)
标签: list sorting haskell merge grouping