|
Заблокирован
|
||
Наиболее быстрый способ сортировки файла в 1 Тб при ограниченном объёме оперативной памяти29.07.2015, 16:30. Показов 30690. Ответов 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
Сообщений: 183
|
||||||
| 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
Сообщений: 183
|
|||||||
| 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 | |
|
Наиболее быстрый способ сравнения двух экземпляров структур на предмет одинаковости их полей Какой способ сортировки одномерного массива самый быстрый?
Наиболее рациональный способ распределения памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|