Собственно есть файл1 и файл2, допустим обьем файла1 100кк строк, а файла2 20кк строк, нужно проверить вхождения файла2 в файл1, и записать в новые 2 файла строки которые либо есть в файле1 либо нету, по сколько обьемы строк очень большие есть ли какие то быстрые не ресурсоемкие решения на с++ или с#?
Смотрите, наивный алгоритм, который будет сравнивать каждую строчку с каждой, будет для вас слишком медленным. Поэтому сделаем алгоритм, который разделит данные за один проход.
Для начала отсортировать ваши файлы. Это на самом деле самая ресурсоёмкая операция. Для этого вам может понадобиться внешняя сортировка, если ваши файлы не влезают в память.
Теперь, когда файлы отсортированы, вы делаете так. Пусть у вас есть текущая строка из первого файла (назовём его словарём), и второго (назовём его вводом). Откроем оба файла, и считаем первую строку из каждого.
Далее в цикле пока ввод или словарь не окончился, делаем следующее в цикле:
Если после окончания цикла ввод не окончился, все его строки тоже попадают во второй выходной файл.
Обратите внимание, что алгоритм довольно сильно напоминает сортировку слиянием, которая вам, судя по всему, понадобится для внешней сортировки.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как можно скомпилировать c++ приложение в windows, чтобы оно запускалось без консоли? Я пробовал добавлять флаг -mwindows при компиляции, но тогда...
Всем привет! Я пишу приложение на С++ в среде Qt Creator, в котором будет несколько оконУ меня имеется массив некоторых объектов, и я хочу, чтобы...
Подскажите пожалуйста, кто знает, как сделать такую анимацию или каким способом? Гугл штурмовал, но толком ничего так и не нашелЗа ранее спасибо...
Как отсортировать HashMap по убывания количества повторений, то есть по Integer ? Если у кого-то есть реализация, буду очень благодарен)