特定の整数フィールドを含む非常に大きなネットワーク キャプチャ ファイルがあります。
RECORD 1 : value 987
RECORD 2 : value 878
RECORD 3 : value 823
..
..
..
..
..
ネットワーク ファイルをスキャンして、その整数フィールドの最も一般的な値を 5 つ見つけたいと考えています。従来の線形アルゴリズム アプローチでは、すべての一意の整数フィールド値とフィールド値の出現頻度を保存する必要があります。この問題を解決するには、reduce アルゴリズムを使用します。
私のmap()
関数は整数値を抽出し、それを配列に格納します。
A = [987, 878, 823 ......].Map(x => x,freq(x))
私のreduce()
機能は
freq5 = A.reduce( 0, (x > y) ? x : y)
または、上位 5 つの最も頻度の高い値を見つけるのと同様のもの。
このアプローチは理にかなっていますか?
プログラムの実行時間にどのような影響がありますか?