Есть 256 файлов, в которых 8-ми байтные числа, уникальные все,
каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится.
как можно лучшим образом получить общий файл полностью отсортированный?
Здравствуйте, Socket, Вы писали:
S>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все, S>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится. S>как можно лучшим образом получить общий файл полностью отсортированный?
Т.е. нужно склеить все файлы в один и пересортировать числа внутри этого 8Гб файла?
Что тут сложного? Сперва склеиваешь файлы в один.
А потом CreateFileMapping и MapViewOfFile тебе в помощь.
Условно разбиваешь файл на блоки, сортируешь значения в каждом из блоков, потом по
первому и последнему элементу блоков сортируешь сами блоки.
В Кнуте есть очень хорошие алгоритмы сортировки уникальных значений.
На каждую хитрую функцию найдется параметр с резьбой.
Здравствуйте, nitrotoluol, Вы писали:
N>Здравствуйте, Socket, Вы писали:
S>>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все, S>>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится. S>>как можно лучшим образом получить общий файл полностью отсортированный?
N>Т.е. нужно склеить все файлы в один и пересортировать числа внутри этого 8Гб файла?
N>Что тут сложного? Сперва склеиваешь файлы в один. N>А потом CreateFileMapping и MapViewOfFile тебе в помощь.
не. сначала сортируешь каждый файл, а потом собирай в один. намного быстрее выйдет.
N>Условно разбиваешь файл на блоки, сортируешь значения в каждом из блоков, потом по N>первому и последнему элементу блоков сортируешь сами блоки.
N>В Кнуте есть очень хорошие алгоритмы сортировки уникальных значений.
S>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все, S>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится. S>как можно лучшим образом получить общий файл полностью отсортированный?
Ключевое слово — сортировка слиянием, гуглом найдёшь массу информации.
Здравствуйте, Socket, Вы писали:
S>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все, S>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится. S>как можно лучшим образом получить общий файл полностью отсортированный?
Недавно в форуме пробегала ссылка на контейры, совместимые с STL и потдерживающие больше 2^32 элементов.
Здравствуйте, Socket, Вы писали:
S>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все, S>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится. S>как можно лучшим образом получить общий файл полностью отсортированный?
Для тех кто не хочет изучать алгоритмы сортировки 1. загружаем все данные в одну таблицу БД
2. делаем select с подходящим order by, результат запроса сохраняем в файл
ЗЫ: сильно не ругайте, все-таки в каждой шутке есть доля правды
Здравствуйте, Left2, Вы писали:
S>>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все, S>>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится. S>>как можно лучшим образом получить общий файл полностью отсортированный? L>Ключевое слово — сортировка слиянием, гуглом найдёшь массу информации.