Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка данных в больших файлах 
:(
    Опции темы
ShadowDancer
Дата 3.10.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.6.2006

Репутация: нет
Всего: нет



Не могу найти подходящего алгоритма для сортировки данных в файлах, размером от 500 и более Мб.
Данные в файле размещаются по структуре
Код

TDataType = record
  Data: int64;
  Name: longint;
end;

нужно отсортировать данные таким образом, чтобы в начале файла были самые меньшие значения Name в этой структуре, а в конце - большие, т.е. по возрастанию. Каким образом это можно сделать быстро и без огромной затраты оперативной памяти ?

Это сообщение отредактировал(а) ShadowDancer - 3.10.2008, 18:45
PM MAIL   Вверх
Kesh
Дата 3.10.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



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

Только вот что это за тип Int54 smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
ShadowDancer
Дата 3.10.2008, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.6.2006

Репутация: нет
Всего: нет



Наверное я могу сделать сортировку только методом пузырька, но он же на таких больших файлах совсем медленно будет работать ((
PM MAIL   Вверх
ne0n
Дата 3.10.2008, 22:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



Цитата(ShadowDancer @  3.10.2008,  20:16 Найти цитируемый пост)
Наверное я могу сделать сортировку только методом пузырька, но он же на таких больших файлах совсем медленно будет работать ((


ну дык правильно, пузырек- квадратичная сотрировка(временная сложность n^2).
Используй быструю сортировку. глянуть можешь тут:http://ru.wikipedia.org/wiki/Quicksort#Pascal 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.