的列出了每一天,我們有大約50,000的數據結構的情況下(這最終可能增長要大得多)封裝了以下內容:算法匹配整數
DateTime AsOfDate;
int key;
List<int> values; // list of distinct integers
這可能是不相關的,但列表values
是具有屬性的不同整數的列表,對於給定值AsOfDate
,values
的並集覆蓋所有值key
產生不同整數的列表。也就是說,在同一天的兩個不同的values
列表中不會顯示整數。
該列表通常包含非常少的元素(介於一到五之間),但有時只要五十個元素。
鑑於相鄰的日子,我們試圖找到這些對象的實例,其中兩天的key
值不同,但列表values
包含相同的整數。
我們使用以下算法。通過
string signature = String.Join("|", values.OrderBy(n => n).ToArray());
轉換列表values
爲一個字符串,然後散列signature
爲整數,責令造成的散列碼列表(一個列表的每一天),這兩個表走尋找匹配,然後檢查,看看如果相關的鍵不同。 (同時檢查相關列表以確保我們沒有散列衝突。)
是否有更好的方法?
什麼語言?它可以有一個有用的內建 – awithrow 2009-02-27 02:05:10
@awithrow它是C#。從給出的代碼中假定。 – Gant 2009-02-27 02:09:19
@影子:好點。我試圖成爲語言不可知論者,但我們使用.NET 3.5 SP1上的C#進行編碼。 – jason 2009-02-27 02:32:38