Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка в порядке убывания, запарился :( 
:(
    Опции темы
mvdr
  Дата 13.7.2005, 04:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

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



Вот смысл: есть файл с числами, записанными по одному на строке. В ходе исполнения этот файл пополняется новыми данными (новая строка с новым числом).
Это число может быть больше поледнего( наименьшего).
Задача: отсортировать сей список, чтобы числа стояли в порядке убывания.

Числа - integer


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Chrisstoff
Дата 13.7.2005, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 28.5.2005
Где: Hell... жудкое ме сто

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



Один вопрос ... файло типизированное или просто текстовое ..?
PM MAIL ICQ   Вверх
vadims
Дата 13.7.2005, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В чем сложность то ???

Сортировка файла который потенциально нельзя закачать в память ???

Для этого существует 'ленточная' сортировка - файл разбивается на блоки - каждый из которых сортируется в памяти и сохраняется во временном файле.

Сохраняем максимальное значение для каждого блока, по которым выбираем блок с которого начинаем записывать в результирующий файл
Каждое число из 'рабочего' блока сравниваем со списком максимальных, если больше - записываем в 'результат', если меньше - меняем рабочий блок

Или в чем то другом проблема ???





--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Yanis
Дата 13.7.2005, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



2 Femida
А почему бы сразу не реализовать добавление числа перед самым большим числом в файле?

Цитата
Числа - integer
Это как?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
vadims
Дата 13.7.2005, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Yanis @ 13.7.2005, 07:37)
добавление числа перед самым большим числом в файле
А это как ???



--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Yanis
Дата 13.7.2005, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Цитата(vadims @ 13.7.2005, 07:41)
А это как ???

Просто с самого начала в файл записывать числа по порядку, т.е. по убыванию. Что непонятного?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Петрович
Дата 13.7.2005, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

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



Цитата(Yanis @ 13.7.2005, 08:44)
Просто с самого начала в файл записывать числа по порядку, т.е. по убыванию. Что непонятного?

Сказанно же что:
Цитата
В ходе исполнения этот файл пополняется новыми данными (новая строка с новым числом).



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
vadims
Дата 13.7.2005, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Петрович
ИМХО: В этом варианте только перезаписывать весь файл - иначе как еще ты после строк

4
356
879

всунешь строку 400

Тогда вообще проблемы не вижу - простая реализация руьинных опреаций


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Петрович
Дата 13.7.2005, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

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



Цитата(vadims @ 13.7.2005, 10:17)
ИМХО: В этом варианте только перезаписывать весь файл - иначе как еще ты после строк

Вот и я о том же


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
mvdr
Дата 14.7.2005, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

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



Как говорится - утро вечера мудренее smile
Решил действовать так: записывать числа в Мемо, там сортировать, а потом это писать в файл.

Это просто мысля стукнула - пошел реализовывать


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
mvdr
Дата 15.7.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

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



постаивим вопрос по другому: КАК отсортировать? (пробовал через массив - нифига), как только не извращался


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Akina
Дата 15.7.2005, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Femida
Давай поставим вопрос так - а сколько их, этих твоих integer-ов, может быть по максимуму?
И второй вопрос - чем оправдано требование что это ОДИН файл? Возможен вариант, скажем, сотни файлов, при слепливании которых в нужном порядке получится требуемый?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
CosmoMan
Дата 15.7.2005, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
пробовал через массив - нифига

Мало пробовал.

Предлагаю уникальный алгоритм на Delphi с использованием массивов.

Код

const NumOfArray = 30; //или сколько хочеш
var
a, b  :array of Integer;
i, j    :Integer;
num :Integer;
begin
  SetLength(a,NumOfArray+1); //мы без 0-го элемента обойдёмся 
  SetLength(b,NumOfArray+1);
  for i := 1 to NumOfArray do
  begin
    //здесь инициализируеш свой массив
  end;
  for i :=  1 to NumOfArray do
  begin
    for j := 1 to NumOfArray do
    begin
      if a[i] > a[j] then num := num + 1;
    end;
    b[num + 1] := a[i];
    num := 0;
  end;
  SetLength(a,0); //память дороже
  //b - отсортирован по возрастанию
  //ставиш в условии a[i] < a[j] и получаеш по убыванию
end;


PM MAIL   Вверх
Akella
Дата 15.7.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



PM MAIL   Вверх
mvdr
Дата 15.7.2005, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

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



Цитата(Akina @ 15.7.2005, 18:05)
сколько их, этих твоих integer-ов, может быть по максимуму?

Это типа статистики, т.е. сыграл игру - записался результат.

Добавлено @ 17:26
CosmoMan, сэнкс


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
Chrisstoff
Дата 15.7.2005, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 28.5.2005
Где: Hell... жудкое ме сто

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



Нда пузырьковая сортирофка массива это должно быть круто или я ничего не понимаю в программировании smile
Ведь я так понимаю это самое количество элементоф заранее неизвестно и брать массиф "побольше на фсякий случай ... авось не переполнится" отнють не самый оптимальный вариант товарыщи ...
Как вам идея использовать память динамически ... односвязный список ... попросту говоря
Код

type
  PNode = ^Node;
  Node = record
     i: Integer;
     prev: PNode;
  end;
....

Зато под любое количество выделяй себе память для нового елемента да и добавляй в список однажды отсортированный в нужное место ... а потом фсё в файло слить еси надо ...
PM MAIL ICQ   Вверх
Quadr0
Дата 16.7.2005, 20:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 00:39
  Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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