0

我有一个从 csv 文件生成的客户对象数组:

Date, Name, Sales
03/01, Alpha, 110 03/23
, Alpha, 25
01/02, Beta, 135
...
.csv。可能有多达 500,000 条记录和 100,000 个唯一客户!

4

2 回答 2

2

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

对于每个客户:

--按销量排序

--如果记录数为奇数,则返回中间索引处的销售额

--如果记录数是偶数,则返回中间任一侧记录的平均值

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

于 2011-08-18T13:21:03.067 回答
0

在这种情况下,我会使用:

Dictionary<string, List<int>> dict; 

键是客户名称(假设它们是唯一的,否则分配某种唯一 ID?)值是每个客户的销售列表。填充此数组后,您可以进行排序并获取中间元素(如上所述)或将元素的数量相加并除以获取中值。(这是错误的)

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

有一些选择算法可以返回 O(n) 中的第 k 个最小值,请查看下面的维基百科链接

于 2011-08-18T13:46:37.677 回答