0) Если у вас достаточно ОЗУ для хранения полей меньшего файла в ОЗУ, вы можете это сделать.
0 a) Сохраните его в HashMap (если вы можете себе позволить накладные расходы и можете использовать ha sh -функция, которая хеширует числа, которые настолько похожи, что вы предполагаете, что они совпадают с одним и тем же значением) -> проверяет стоимость O (1)
0 б) Сортировать поля в ОЗУ (стоит O (n * log n) и проверяет стоимость позже O (log n) )
Перебирайте файл, которого нет в оперативной памяти, и проверяйте каждый значение, если оно у вас уже есть в ОЗУ.
Таким образом, вы читаете оба файла только один раз, и затраты будут a) O (n) , b) O (n log n )
1) Если вы не можете загрузить меньший файл в ОЗУ: Выполните то же действие, что и в 0) для каждого фрагмента данных меньшего файла. Это означает, что вам нужно прочитать фрагменты (k фрагментов) из одного файла и для каждого перебрать другой файл.
Таким образом, вы читаете меньший файл один раз, а другой k раз. Затраты: a) O (k n) , b) O (k n / k log n / k + n k * log n / к)