Я пытаюсь реализовать Двухходовую сортировку с множественным слиянием в Python.
До сих пор я реализовал Pass 1, и у меня возникли проблемы с реализацией Pass 2.
Вот структура файла для чтения (tab separated data
):
name ssn gender job company address
Alicia Best 201-30-5041 F Tree surgeon Griffin, Vasquez and Hunt 932 Ryan Turnpike Suite 686East Roger, MD 56628
Cameron Scott 700-12-6740 M Financial adviser Griffith-Sosa 1733 Scott PineEast Matthew, ID 20677
William Novak 054-78-8142 M Music therapist Williams LLC 648 Ballard Courts Suite 214Taylorhaven, CA 45271
Paul Hodges 875-49-7490 M Advertising art director Ward, Salas and Malone 15382 Roger VillageSouth Cody, IA 41827
VincTannerent Ramirez 569-99-2727 M Theatre stage manager Price, White and Black 76567 Phillips LoafEast William, DE 32235
Kellie Pacheco 300-77-5182 F Doctor, hospital Miller Inc 9789 Sullivan CornersSouth Deniseshire, MD 16612
...
...
...
Я сохранил результат Pass 1 в отдельной файловой структуре, как показано ниже:
name ssn gender job company address
Adam Duke 740-34-2566 M Diplomatic Services operational officer King, Jones and Castillo 178 Robert LoopWhitechester, MT 97087
Adam Morris 840-49-4963 M Neurosurgeon Knight Group 1104 Laura StationKarenshire, OR 86801
Alan Sanchez 688-73-4197 M Environmental education officer Thomas Inc PSC 2324, Box 9034APO AE 08323
...
... after N lines
...
Yolanda Ramirez 859-41-4401 F Biomedical engineer Lynn-Brock 498
Gutierrez Oval Suite 867South Clifford, OH 10700
Albert Reyes 025-28-1361 M Engineer, energy Nolan, Vazquez and Jordan 4096 Elizabeth PlazaLake Timothy, RI 12215
Alex Escobar 018-96-9641 M Glass blower/designer Flowers, Li and Smith 251 Mcpherson MotorwaySchmidtfort, FM 43628
Alexander Flores 648-01-7451 M Engineer, maintenance Munoz, Tucker and Freeman 0743 Vanessa FortJonesview, GA 57871
Alexander Kramer 061-08-3051 M Designer, ceramics/pottery Johnson-Peterson 800 Kristen VillageStewartton, MA 57143
Для тестирования я рассмотрел разделение фрагментов на 100 строк и отсортировал эти данные внутренне с атрибутом (может быть именем или полом или другим допустимым атрибутом)
Для pass 2 Мне нужно прочитать строку 1, 101, 201....
и выбрать подходящий результат среди этих строк.
Скажем, если я выбираю строку 101, то на следующей итерации мне нужно прочитать строки 1, 102, 201....
Так что мне просто сложно понять, как мне выполнить вышеупомянутые два шага для эффективной итерации по файлу?
Я открыт для любых предложений, таких как хранение кусков в другом файле, а не в отдельном файле или любым другим способом.
ссылка для завершения кода
Я также упомянул ниже темы: