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 に答える