LINUX.ORG.RU

А чего понимается под сортировкой? Есть БД и надо сортировать записи? В libc есть qsort(), но, IMHO, она для БД не покатит. Вообще-то это делается элементарно через индекс. Создается специальный массив с номерами записей БД, и этот массив и сортируется по нужному полю БД. Потом пишется в отдельный файл. Можно сделать столько массивов, сколько полей в БД. Индексирование идет долго, но потом доступ к нужной записи БД выполняется мгновенно. Вставка новой записи и удаление существующей выполняются тоже быстро (удаление сводится к выкидыванию номера записи из индекса). А вот реальное удаление записей из файла БД - дело долгое, но оно и делается редко. Если нужно, могу запостить алгоритм создания индекса.

nobody ★★
()

Вообще-то у меня файлы состоят из чисел, нот так как сами файлы большие, нет возможности целиком их грузить в память и там сортировать. Есть возможность разбивать на куски, сортировать и собирать обратно. Такая фича уже существует (тока где имено - вот в чем вопрос), поэтому решил сам в ручную не писать. А насчет индекса - оч. хорошая идея :)

babai
() автор топика

Алгоритм сортировки должен знать размерность и тип данных, хранимых в двоичном файле. Поэтому универсальная утилита вряд-ли существует. Если же тип данных известен, то написать утилиту, используя функцию qsort() из stdlib.h или алгоритм sort() из STL - пара пустяков. Размер сортируемых файлов существенного значения не имеет.

aist1 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.