Сначала - подумайте об использовании баз данных - они предназначены для идеальной работы такого рода.
Если подход с БД невозможен, подготовьте файлы данных с сортировкой по ключу id
.
Есть несколько тем о сортировке больших файлов, внешней сортировке - выберите метод, подходящий для вас.
Если возможно, используйте (я думаю - высоко оптимизированный) утилиту наподобие GNU sort , которая имеет возможность выбирать ключи для сравнения
Затем выполните операцию слияния - прочитайте строки из обоих отсортированных файлов для получения идентичной формы идентификатора и запишите полученную строку. Если значение id
меньше, прочитайте следующую строку из соответствующего файла и так далее. Псевдокод:
while not EOF(fileA) and not EOF(fileB):
if lineA.id == lineB.id:
write(fileC, lineA.id, lineA.name, lineB.age)
lineA = readNext(fileA)
lineB = readNext(fileB)
else if lineA.id < lineB.id:
lineA = readNext(fileA)
else:
lineB = readNext(fileB)