- Хранить в памяти 2000 int = размер
буфер
Нет ограничений для файлов для чтения / записи
= каждый счетчик чисел будет сохранен в одном файле.
Числа длиной 32 бита = Каждый
файл это одно число и имя файла
это 32-битный, который представляет
целое число (можно использовать целое значение
а также)
Показать гистограмму (означает, что
необходимо)
псевдокод:
count = 2000
HashMap<number, number> = new
code:readbuffer
while count != 0
read NextNumber
if HashMap.HasKey NextNumber then HashMap[NextNumber]++
else HashMap[NextNumber]=1
count --;
end while
code:flushbuffer
foreach Key in HashMap
if exists FileName Key.ToBinnary
FileValue += HashMap[HashKey]
else WriteNewFile FileName=Key.toBinnay; SetValue = 1
end foreach
code: histogram
each file name is the number;
each file value is the count.
Расходы: readbuffer
Считанный порядковый номер = 2M (M = Миллион)
Map.HasKey = (поиск ключа в записи 2000 года, в худшем случае номера там нет, РЕЗЮМЕ (∑2000) x2M)
SetValue на карте та же стоимость, что и выше
Итого: (2M) + (2Mx∑2000) x2
Расходы: флешбуфер
File.exists 2M
Расходы: гистограмма
2M
Всего = 6M + 4Mx∑2000