Что такое хороший алгоритм для сортировки текстовых файлов, размер которых превышает доступную память (много десятков гигабайт) и содержит записи переменной длины?Все алгоритмы, которые я видел, предполагают, что 1) данные помещаются в память, или 2) записи имеют фиксированную длину.Но представьте себе большой CSV-файл, который я хотел отсортировать по полю «Дата рождения» (4-е поле):
Id,UserId,Name,BirthDate
1,psmith,"Peter Smith","1984/01/01"
2,dmehta,"Divya Mehta","1985/11/23"
3,scohen,"Saul Cohen","1984/08/19"
...
99999999,swright,"Shaun Wright","1986/04/12"
100000000,amarkov,"Anya Markov","1984/10/31"
Я знаю, что:
- Это будет выполняться на один компьютер (не распространяется).
- На компьютере, на котором я буду работать, будет несколько процессоров.
- Файлы, которые я буду сортировать, могут быть больше, чемфизическая память машины.
- Файл содержит строки переменной длины.Каждая строка будет состоять из фиксированного числа столбцов (значений, разделенных разделителями).Файл будет отсортирован по определенному полю (т.е. 4-му полю в файле).
- Идеальным решением , вероятно, было бы «использовать эту существующую утилиту сортировки», но яв поисках лучшего алгоритма .
- Я не ожидаю полностью закодированного рабочего ответа;что-то более похожее на «проверьте это, вот как это работает, или вот почему это хорошо работает для этой проблемы».Я просто не знаю, где искать ...
- Это не домашняя работа!
Спасибо!♥