Название: Как произвести сортировку строк большого файла Отправлено: kvrus от Июнь 09, 2012, 15:12 Есть лог файл с датами и сообщениями очень большого размера (~1Гб). Как сделать сортировку
строчек? как то можно его по частям проверять? Название: Re: Как произвести сортировку строк большого файла Отправлено: Igors от Июнь 09, 2012, 15:24 Есть лог файл с датами и сообщениями очень большого размера (~1Гб). Как сделать сортировку Выбираете дату "медиану". Создаете 2 файла, в первый пишете все строки меньше медианы, во второй - все что больше. Если получившиеся куски еще слишком велики - делите их рекурсивно. Потом сортируете каждый кусок в памяти и пишете все сортированные куски в новый файл. Возможна ситуация когда память есть (напр 2 Gb) но выделить слишком большой блок все равно не удается - это нормально. строчек? как то можно его по частям проверять? Есть способ и проще Код Создаете контейнер таких, сортируете и потом собираете делая seek. Писать меньше но тут предполагается что контейнер влезет в память Название: Re: Как произвести сортировку строк большого файла Отправлено: LisandreL от Июнь 09, 2012, 15:26 Если нет запрета на использование промежуточных файлов, то делайте merge sort (http://ru.wikipedia.org/wiki/%D1%EE%F0%F2%E8%F0%EE%E2%EA%E0_%F1%EB%E8%FF%ED%E8%E5%EC).
То есть читаете блок записей, сортируете и сбрасываете результат во временный файл. Потом полученные файлы вместе объединяете сразу все вместе или группами (обычно попарно). Название: Re: Как произвести сортировку строк большого файла Отправлено: SimpleSunny от Июнь 10, 2012, 12:59 "внешняя сортировка" -> google
Название: Re: Как произвести сортировку строк большого файла Отправлено: Igors от Июнь 10, 2012, 13:48 Если уж налицо виртуозное владение гуглой, то позвольте спросить. Вот пишут
Цитировать Сортируемый массив разбивается на две части примерно одинакового размера; А как это сделать?Спасибо Название: Re: Как произвести сортировку строк большого файла Отправлено: SimpleSunny от Июнь 10, 2012, 14:50 Если уж налицо виртуозное владение гуглой, то позвольте спросить. Вот пишут Цитировать Сортируемый массив разбивается на две части примерно одинакового размера; А как это сделать?Спасибо Кто где пишет? Внешняя сортировка - это только название класса алгоритмов, далее уже выбирается подходящий под свои нужды. Название: Re: Как произвести сортировку строк большого файла Отправлено: Igors от Июнь 10, 2012, 15:19 Кто где пишет? В авторитетном источнике "Википедия", эту ссылку рекомендовал LisandreL http://ru.wikipedia.org/wiki/%D1%EE%F0%F2%E8%F0%EE%E2%EA%E0_%F1%EB%E8%FF%ED%E8%E5%EC (http://ru.wikipedia.org/wiki/%D1%EE%F0%F2%E8%F0%EE%E2%EA%E0_%F1%EB%E8%FF%ED%E8%E5%EC) Там и мувики есть Название: Re: Как произвести сортировку строк большого файла Отправлено: SimpleSunny от Июнь 10, 2012, 20:01 Ссылка LisandreL не совсем уместна в данном контексте, так как там рассказыватся про алгоритм сортировки слияниям, а не про слияние отсортированных файлов.
|