Можно принести худший случай к O (N^2)
, поставляя объекты, что вся мешанина к тому же самому ведру , когда набор достигает своего максимального размера . Например, если вы передаете последовательность 17519 интервал
s построенный как
x[i] = i * 17519
for i
between 1 and 17519, inclusive, all numbers will hash to the initial bucket on Microsoft's implementation of HashSet
, taking O(N^2)
to insert:
var h = new HashSet(Enumerable.Range(1, 17519).Select(i => i*17519));
Установите кир kpoint и исследуйте h
в отладчике. Взгляд на Сырое Представление/Непубличные участники/m_buckets. Заметьте, что у начального ведра есть 17519 элементов, в то время как оставление 17518 у всех есть ноли.