2011-08-18 76 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