|
Заблокирован
|
||
Наиболее быстрый способ сортировки файла в 1 Тб при ограниченном объёме оперативной памяти29.07.2015, 16:30. Показов 29689. Ответов 85
Метки нет (Все метки)
Привет!
Какой есть наиболее быстрый способ сортировки файла, содержащего int-ы (по одному int-у на каждой строчке), размером в 1 террабайт, если на компе, к примеру, доступно всего 2 гб оперативки ... ? Ну файл с нитами типа:
![]() ![]() Добавлено через 1 час 11 минут Важная тема теряется... Up! ![]() Добавлено через 4 часа 45 минут Ну так что, никто не подскажет, как отсортировать 1 гиг в файле?
0
|
||
| 29.07.2015, 16:30 | |
|
Ответы с готовыми решениями:
85
Наиболее быстрый способ склеивания фрагментов файла Наиболее быстрый способ записи в консоль Наиболее быстрый способ забрать данные из html |
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||||||
| 30.07.2015, 13:43 | ||||||
|
Добавлено через 3 минуты
0
|
||||||
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
||||||
| 30.07.2015, 13:46 | ||||||
|
1
|
||||||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||
| 30.07.2015, 13:54 | ||
![]() Butt-Head, для пущей убедительности добавлю, что код к абсолютно такой же задаче я писал в офисе Яндекса на собеседовании в 2011 году, - и меня взяли. Это задача пары часов уровня младшего разработчика.
1
|
||
|
Заблокирован
|
|||
| 30.07.2015, 13:58 [ТС] | |||
|
Да чиТо за хрень
![]() Eraston, ct0r, вы можете на конкретном примере продемонстрировать пошагово, как работает ваш метод? Я чё то не улавливаю профита ... Вот допустим у меня есть исходный файл (в оригинале - террабайтный) со значениями: 3 55 24 2 3 2 Вот тут 6 значений. Допустим наш лимит в 2 гига, это чтение 2-х значений. Короче блоки по два значения... Как будет выглядеть ваш метод пошагово? Добавлено через 1 минуту ![]()
0
|
|||
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|||||||
| 30.07.2015, 14:04 | |||||||
|
Тут 2 варианта: 1. Выбирать минимальный из N=колво_открытых_блоков элементов (4*N байт) и писать в выходной файл. 2. Загрузить сразу определенное количество элементов (тут 6, т.е. N*6*4, а вообще... чтобы 2 Гб забить) и а) отсортировать их, б) записать. а) память занята, сортировка идет, файл не пишется б) память занята, сортировка не идет, файл пишется 3. В случае с тредами: а) память занята, сортировка идет, файл пишется б) память занята, сортировка идет, файл пишется Добавлено через 4 минуты
1
|
|||||||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||
| 30.07.2015, 14:06 | |||
|
Считали 3 55. Отсортировали. Записали 3 55 в файл 1.dump
Считали 24 2. Отсортировали. Записали 2 24 в 2.dump Считали 3 2. Отсортировали. Записали 2 3 в 3.dump Итого у нас 3 открытых файла 3 55 2 24 2 3 Считываем например по одному значению из них - 3 2 2. Берем минимальное - 2, пишем в выходной файл его, считываем из файла, откуда мы взяли эту двойку, следующее число - 24. Выбираем минимальное из 3 24 2. Это 2. Пишем в выходной файл. Читаем из третьего файла (посколько мы оттуда уже взяли двойку и записали в выходной файл) тройку. Берем минимум из 3 24 3. И так далее. Я показал пример без буферов чтения отсортированных кусков, чтобы идея была понятнее. ![]() Тут нет никакой специфики, должен каждый уметь.
1
|
|||
|
Заблокирован
|
||||
| 30.07.2015, 14:15 [ТС] | ||||
|
Eraston, ты нуб, объяснять ваще не умеешь Но всё равно спасибо
0
|
||||
| 30.07.2015, 14:20 | |
|
0
|
|
|
Заблокирован
|
|
| 30.07.2015, 14:23 [ТС] | |
|
0
|
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||
| 30.07.2015, 14:29 | ||
|
1
|
||
|
Заблокирован
|
||||
| 30.07.2015, 14:39 [ТС] | ||||
|
Видишь, даже мой тред называется: "Наиболее быстрый способ сортировки файла...". Я зашёл сюда, что бы узнать.. У человечества всё больше и больше знаний и забивать голову всякой ерундой, которую можно посмотреть на любом форуме, не имеет никакого смысла, собственно как и оценивать кандидата на собеседование аналогичными задачами. Сейчас более эффективна ссылочная память, то есть помнишь, что такое есть, примерное где применяется и главное, где посмотреть. Так больше в голову влезает ![]() По этому я и говорил:
0
|
||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 30.07.2015, 15:00 | ||
|
0
|
||
|
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
|
||
| 30.07.2015, 15:01 | ||
|
И вообще я сильно сомневаюсь, что сортировка слиянием тут будет быстрее.
0
|
||
|
0 / 0 / 1
Регистрация: 10.03.2014
Сообщений: 15
|
|
| 30.07.2015, 15:02 | |
|
0
|
|
|
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
|
||
| 30.07.2015, 15:07 | ||
|
Добавлено через 4 минуты Вот есть последовательность 3 1 4 1 5 9 на первом этапе мы записали 13 14 59 и все, памяти уже переписано эквивалентно исходной последовательности, а она еще не отсортирована. В чем я не прав?
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 30.07.2015, 15:13 | |
|
0
|
|
| 30.07.2015, 15:20 | |
|
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 30.07.2015, 15:23 | ||
|
0
|
||
|
Заблокирован
|
|||
| 30.07.2015, 15:26 [ТС] | |||
|
Да, ты сделал три блока, отсортированных локально как бы, то есть внутри себя и записал их в файлы. Далее открываешь одновременно все эти файлы, в данном случае с 13, 14 и 59 и читаешь из них (из каждого), первое значение, получается: 1 1 5 ищешь первое минимальное, - это один из первого файла, пишешь это значение (единицу) в результирующий файл и cдвигаешь ленту первого файла на одно значение и берёшь опять слепок ;) Смари, тут просто хитрость, представь тре плёнки от фотоаппарата (ну раньше были плёночные фотоаппараты, в курсе? :D ) Вот ты кладёшь их на стол. Берёшь... ну не знаю, листочек А4 и вырезаешь прямоугольник в нём, что б в столбик там поместилось 3 слайда. Кладёшь этот листок на три плёнки свои на столе на начало плёнок. Видишь там в столбик три кадра в столбик (по кадру от каждой плёнке) (первые кадры), это как бы три значения. Ищешь минимальное значение и записываешь его в результирующий файл. После этого, ты рукой сдвигаешь ленту с кадрами, с которой ты "брал" кадр, влево на 1 кадр и смотришь опять в прямоугольное окно... и т.д. Добавлено через 1 минуту
0
|
|||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 30.07.2015, 15:28 | ||
|
0
|
||
| 30.07.2015, 15:28 | |
|
Помогаю со студенческими работами здесь
60
Наиболее быстрый способ сравнения двух экземпляров структур на предмет одинаковости их полей Какой способ сортировки одномерного массива самый быстрый?
Наиболее рациональный способ распределения памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
|
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так?
Да, всё верно. Я — искусственный интеллект.
Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
|