2011-08-18 64 views
0

我有一个CSV文件生成的客户对象的数组:计算平均销售额在客户阵列中的每个客户(新兵)

日期,名称,销售
03/01,阿尔法,110
03/23,阿尔法,25
01/02,Beta版,135
...
,需要一种有效的方式,以创造独特的客户与中位数销售的新数组并将其导出回CSV。可能有多达50万条记录和100,000个独特客户!

+1

使用Excel维基百科链接呢? :D – Bas

回答

2

-将您的源数据分割为每个客户的集合。

对每一个客户:

--sort通过销售

--IF记录数为奇数,中间指数在返回销售

--IF记录数为偶数,则返回中间两侧的记录平均值

- 将返回的记录放入结果数组中。

+0

您能否提供一些示例代码来指引我朝着正确的方向 - 仍在学习! – matekus

0

在这样的情况下,我会用:

Dictionary<string, List<int>> dict; 

的关键是客户的名称(假定它们是唯一的,以其他方式转让某种独特的ID?) 值是销售的每一个列表顾客。填充完这个数组后,你可以在排序和得到中间元素(如上所述) 或求和除以元素的数量以获得中值。 (这是错误的)

排序(使用比较方法)需要O(nlog n)时间,其中n是要排序的列表的长度。

有选择算法,它可以返回第k个最小值为O(N),检查以下

+1

总结列表并除以计数是平均值(平均值)。你不会(总是)与中位数相同。 http://en.wikipedia.org/wiki/Median –

+0

我应该考虑使用内联F#,如果是这样,如何? – matekus