Форум программистов, компьютерный форум, киберфорум
Наши страницы

Наиболее быстрый способ сортировки файла в 1 Тб при ограниченном объёме оперативной памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Наиболее быстрый способ сравнения двух экземпляров структур на предмет одинаковости их полей http://www.cyberforum.ru/cpp-beginners/thread1506522.html
Есть структура, в которой есть несколько int-ов и char-ов, какой имеется наиболее быстрый способ в C/C++ для сравнения двух экземпляров этой структуры на предмет полного совпадения значений полей? ...
C++ Заменить "fopen" в c++ на "TOpenDialog" в Builder6 Здравствуйте дорогие форумчане! 1. Что дано: По результатам чтения 1 части книги Пахомова "C++ Для начинающих" написал программу-конвертер. Состоит она из двух частей. Первая - считывает данные... http://www.cyberforum.ru/cpp-beginners/thread1506498.html
Приведение массива char[] (или char* ) в LPCTSTR C++
Задача: пользователь вводит директорию, нужно проверить существует ли эта директория. Функция DirExists проверки работает правильно, но аргумент у этой функции имеет тип LPCTSTR, клиент вводит...
C++ Формула поворота объекта
Здравствуйте! Подскажите, пожалуйста, формулу, по которой можно рассчитать угол ( в радианах ) поворота объекта так, чтобы он смотрел на другой объект. Что-то не получается объяснить на словах, по...
C++ Создание .ехе файла, работающего без подключения библиотек на других компьютерах http://www.cyberforum.ru/cpp-beginners/thread1506415.html
Привет всем. вопрос такой. как в sublime text 3 создать ехе файл(С++(mingw)), который на других компах будеть работать без подключения используемых библиотек. как я понял такой ехе называется...
C++ Список инициализации конструктора Всем привет. У меня есть некоторые вопросы насчет списка инициализации конструктора. Да и вообще не понимаю отличия от инициализации в теле конструктора и в списке инициализации.Вот например здесь... подробнее

Показать сообщение отдельно
Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 127
30.07.2015, 13:17
Цитата Сообщение от ct0r Посмотреть сообщение
Разбиваем на куски. Сортируем каждый кусок. Сразу сливаем все куски в выходной файл.
Как так сразу сливаем? Просто открываем все файлы. У каждого файла есть итератор на текущее число в нем. Выбираем наименьшее число среди всех итераторов. Пишем его в результирующий файл. Сдвигаем этот итератор на следующее число в этом файле. Снова выбираем наименьшее число среди итераторов. И так далее, пока все итераторы не дойдут до конца своих файлов.
Это самый простой и очевидный метод. Его можно оптимизировать. Например, читать из каждого файла не по одному числу, а пачками.
Так как у нас там числа, то можем сортировать за O(n).
Первый проход 1 Тб: считать и записать с сортировкой 1Тб блоками (например, 1024 блока по 1 Гб)
Второй проход 1 Тб: считать из блоков (1024 файловых стрима) с выборкой (очередное наименьшее значение из 1024) 1Тб и записать в 1 Тб
Итого:
Цитата Сообщение от ct0r Посмотреть сообщение
читаем 2 Тб и пишем 2 Тб (пусть и не совсем последовательно, но все равно блоками)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru