посоветуйте с сортировкой
От: Socket Ниоткуда http://www.samborsky.com
Дата: 06.11.07 01:58
Оценка:
Есть 256 файлов, в которых 8-ми байтные числа, уникальные все,
каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится.
как можно лучшим образом получить общий файл полностью отсортированный?
http://www.samborsky.com — мой блог
Re: посоветуйте с сортировкой
От: nitrotoluol  
Дата: 06.11.07 03:28
Оценка: -1
Здравствуйте, Socket, Вы писали:

S>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все,

S>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится.
S>как можно лучшим образом получить общий файл полностью отсортированный?

Т.е. нужно склеить все файлы в один и пересортировать числа внутри этого 8Гб файла?

Что тут сложного? Сперва склеиваешь файлы в один.
А потом CreateFileMapping и MapViewOfFile тебе в помощь.

Условно разбиваешь файл на блоки, сортируешь значения в каждом из блоков, потом по
первому и последнему элементу блоков сортируешь сами блоки.

В Кнуте есть очень хорошие алгоритмы сортировки уникальных значений.
На каждую хитрую функцию найдется параметр с резьбой.
Re[2]: посоветуйте с сортировкой
От: cn324  
Дата: 06.11.07 05:56
Оценка:
Здравствуйте, nitrotoluol, Вы писали:

N>Здравствуйте, Socket, Вы писали:


S>>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все,

S>>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится.
S>>как можно лучшим образом получить общий файл полностью отсортированный?

N>Т.е. нужно склеить все файлы в один и пересортировать числа внутри этого 8Гб файла?


N>Что тут сложного? Сперва склеиваешь файлы в один.

N>А потом CreateFileMapping и MapViewOfFile тебе в помощь.

не. сначала сортируешь каждый файл, а потом собирай в один. намного быстрее выйдет.

N>Условно разбиваешь файл на блоки, сортируешь значения в каждом из блоков, потом по

N>первому и последнему элементу блоков сортируешь сами блоки.

N>В Кнуте есть очень хорошие алгоритмы сортировки уникальных значений.
Re[2]: посоветуйте с сортировкой
От: Qbit86 Кипр
Дата: 06.11.07 07:12
Оценка:
N>А потом CreateFileMapping и MapViewOfFile тебе в помощь.

В Boost.Iostreams есть готовые удобные врапера mapped_file_source, mapped_file_sink.
Глаза у меня добрые, но рубашка — смирительная!
Re: посоветуйте с сортировкой
От: Left2 Украина  
Дата: 06.11.07 09:39
Оценка: 1 (1) +1
S>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все,
S>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится.
S>как можно лучшим образом получить общий файл полностью отсортированный?
Ключевое слово — сортировка слиянием, гуглом найдёшь массу информации.
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re: посоветуйте с сортировкой
От: minorlogic Украина  
Дата: 06.11.07 11:43
Оценка:
Здравствуйте, Socket, Вы писали:

S>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все,

S>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится.
S>как можно лучшим образом получить общий файл полностью отсортированный?

Недавно в форуме пробегала ссылка на контейры, совместимые с STL и потдерживающие больше 2^32 элементов.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: посоветуйте с сортировкой
От: De Bug Финляндия  
Дата: 07.11.07 15:32
Оценка: :))
Здравствуйте, Socket, Вы писали:

S>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все,

S>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится.
S>как можно лучшим образом получить общий файл полностью отсортированный?

Для тех кто не хочет изучать алгоритмы сортировки
    1. загружаем все данные в одну таблицу БД
    2. делаем select с подходящим order by, результат запроса сохраняем в файл

ЗЫ: сильно не ругайте, все-таки в каждой шутке есть доля правды
Re[2]: посоветуйте с сортировкой
От: Socket Ниоткуда http://www.samborsky.com
Дата: 08.11.07 02:40
Оценка:
Здравствуйте, Left2, Вы писали:

S>>Есть 256 файлов, в которых 8-ми байтные числа, уникальные все,

S>>каждый из этих файлов может быть до 1 Гб, т.е. все в память загрузить не получится.
S>>как можно лучшим образом получить общий файл полностью отсортированный?
L>Ключевое слово — сортировка слиянием, гуглом найдёшь массу информации.

Спасибо, понял суть сортировки слиянием, выбрал ее.

p.s. Про БД это конечно сильно!
http://www.samborsky.com — мой блог
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.