sonicsonic1
2.02.2014 - 15:04
Valick , не понимаю почему 1 большой и 26 маленьких,если будет 26 файлов с буквами нижнего регистра и 26 файлов с верхним?
По условию мы вообще не знаем сколкьо памяти есть.
linker,Valick я не совсем понимаю зачем еще потом делать подфайлы? Сразу все строки с "a" пишем в один файл и потом его сортируем и там все. по итогу всё по порядку склеиваем в один?
Цитата (sonicsonic1 @ 1.02.2014 - 15:54) |
Подскажите в каком направлении двигаться и как вообще решаются такие задачи? |
для это подойдет сортировка слиянием
sonicsonic1Когда неизвестно сколько у тебя памяти, то её может оказаться очень мало, а если строк на букву a окажется на 500 мегабайт, то что ты будешь делать?
_____________
Gear FrameworkGear Framework на Github
sonicsonic1
2.02.2014 - 16:19
kaww,спасибо.
linker, Т к из условия вообще не ясно ,то надо бить на подфайлы какого размера? 50 100 400 Мб?
sonicsonic1
2.02.2014 - 16:42
MiksIr ,ну задачу практическая. А можешь пару слов про построение индекса ? Это средствами php реализуется ? и для начинающего ( т.е меня) это не оч сложно реализуется?
Цитата |
ищем в файле две строки, посимвольно их сравниваем читая из файла, если нужно поменять местами - посимвольно переписываем в файле - две строки в файле спокойно меняются местами не трогая остальные строки. |
я бы лично не взялся за такое, звучит легко и просто, а на деле масса подводных камней.
_____________
Стимулятор ~yoomoney - 41001303250491
Я представил себе такой алгоритм: читаем файл и вычитываем (вырезаем) строки с первым символом. Затем переводим файл в запись, переводим указатель на первую позицию и записыавем туда вычитанные данные. Запоминаем символ идущий после записанного блока, переходим в режим чтения и повторяем вычитку строк начиная со второго символа, потом с третьего и т.д.
Так можно отсортировать файл любого размера, а в случае острой необходимости можно ограничивать объем вычитки для контроля нагрузки.
MiksIrПроблема в том, что на индекс для гигабайтных данных может получится таким, что не поместится целиком памяти, чтобы иметь его тот же как массив.
_____________
Gear FrameworkGear Framework на Github
Цитата |
можно ограничивать объем вычитки для контроля нагрузки |
в моем варианте это одна строка
_____________
Стимулятор ~yoomoney - 41001303250491
Цитата (MiksIr @ 2.02.2014 - 18:05) |
Цитата (linker @ 2.02.2014 - 17:45) | MiksIr Проблема в том, что на индекс для гигабайтных данных может получится таким, что не поместится целиком памяти, чтобы иметь его тот же как массив. |
Тут уже упоминали сортировку слиянием. Файл можно разбить на любое количество частей, отсортировать их любым способом и потом слить.
|
Подробнее, отсортировать только внутри эти частей? Не катит. Отсортировать внутри частей, потом между частями всё равно получается, что настанет тот момент, когда сортирующаяся часть станет больше чем размер выделенной части.
_____________
Gear FrameworkGear Framework на Github
sonicsonic1
2.02.2014 - 19:13
Вот mvg описал вроде не сложное решение и вполне нормальное решение + писать можно в другой файл для простоты. Или тут тоже не всё гладко будет?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.