Цитата (linker @ 2.02.2014 - 15:08) |
Подробнее, отсортировать только внутри эти частей? Не катит. Отсортировать внутри частей, потом между частями всё равно получается, что настанет тот момент, когда сортирующаяся часть станет больше чем размер выделенной части.
|
Прокатит. При слиянии читаем только по строке из каждой из двух сливаемых частей и сравниваем между собой. в результирующий файл записываем меньшую, далее читаем строку из того файла, из которого была только чтозаписанная и т.д.
kawwМда, в любом случае это будет ну очень долго и с серьёзным прогибом в I/O. Не знаю, где такая практическая необходимость может понадобится в сфере php.
_____________
Gear FrameworkGear Framework на Github
linker,
мы же говорим об алгоритме, разумеется, на практике в чистом виде без оптимизаций (как наполнять буфер и периодически записывать на диск) использоваться не будет. Ровно как и решать подобные задачи на php находящийся в здравом уме человек вряд ли станет. А вот для тестового задания - самое то.
MiksIr, как-то приходилось много сравнивать строки на php. Это оказалось очень медленно (если за эталон брать с++), в итоге пришлось перенести на бд. Что касается оверхеда по памяти (ваше упоминание SplFixedArray обосновано этим фактом?), то при работе с большими данными он уже не такой выраженный (если речь идет о строках, да и о массивах тоже, если в них мало ключей с большими значениями)
P.S. хотя, если файл окажется с короткими строками (относительно zval), и будем экономить на IO, то в полной мере ощутим перерасход памяти.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.