Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

Сортировка записей в текстовом файле   Найти похожие ветки 

 
azl ©   (2007-03-04 12:19) [0]

Здравствуйте, уважаемые мастера. Помогите, пожалуйста, решить задачу.

Есть одномерный массива А(29), элементы которого распологаются произвольным образом в диапазоне от -12 до 45. И есть одномерный массив В, сформированный из массива А. Все элементы массива В больше чем средне арифметическое массива А. Эти массивы записаны в файлы М1.TXT и M2.TXT.

Нужно сделать следующее:
Выполнить сортировку данных в файле M1.txt по возрастанию, а в файле М2.txt по убыванию. Для сортировки использовать программу типа SUB. Сортировать не элементы массивов, а записи в файлах!

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

 for i := 1 to n do
   for j := n downto i+1 do
     if m1[j-1] > m1[j] then
       begin
         t := m1[j-1];
         m1[j-1] := m1[j];
         m1[j] := t;
       end;


Но надо  отсортировать именно записи в файлах.

Я нашел, некоторый ответ:
"легко, если знаешь кол-во и размер каждой записи:

  заюзай какой-нибудь метод сортировки -
  при переборе значений переставляй записи в файле:
  считывай первую запись, затем вторую если некое условие, то
  переставляй их местами... делов-то.
"

Смысл понятен, только как это можно сделать на практике. Никто не мог бы привести пример работы с записями файла.

Спасибо.


 
Рамиль_   (2007-03-04 12:57) [1]

Для файлов, насколько я помню, надо использовать сортировку слиянием.


 
Leonid Troyanovsky ©   (2007-03-04 13:27) [2]


> azl ©   (04.03.07 12:19)  

> программу типа SUB. Сортировать не элементы массивов, а
> записи в файлах!

Если записи в файле одинаковой длины, то их сортировка
практически не отличается от сортировки массива.

--
Regards, LVT.


 
azl ©   (2007-03-04 13:42) [3]

В том то и дело, что разной. Диапазон от -12 до 45. А это может быть и -10 и -8 и 35.


 
default ©   (2007-03-04 13:44) [4]

azl ©   (04.03.07 13:42) [3]
вряд-ли ты сможешь написать сортировку слиянием
так что делай как говорят в [2]


 
azl ©   (2007-03-04 13:49) [5]

Я понимаю, а пример можно?
В принципе, в одном файле (М2.TXT) все записи одинаковой длины.


 
default ©   (2007-03-04 13:58) [6]

azl ©   (04.03.07 13:49) [5]
можешь использовать TFileStream
многие алгоритмы сортировки являются обменными, то есть в процессе сортировки они переставляют элементы сортируемого списка местами
(ну как в сабжевом примере, в пузырьке в этом галимом:))
у тебя будут просто переставляться записи в файле
для этого как понимаешь не обязательно загружать весь сортируемый список в оперативную память
просто его обычно загружают если можно, чтобы жётский диск не "дёргать" ибо это гораздо медленее чем "дёргать" оперативную память


 
azl ©   (2007-03-04 17:26) [7]

Все равно ладу не дам.


 
azl ©   (2007-03-05 17:35) [8]

А что если воспользоваться процедурой Seek?



Страницы: 1 вся ветка

Текущий архив: 2007.03.25;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.036 c
15-1172946626
Vikos
2007-03-03 21:30
2007.03.25
Delphi: (дата1-дата2)-выходные=кол.дней


15-1172172456
Cyrax
2007-02-22 22:27
2007.03.25
Дружественные методы и классы в C#


2-1173084807
Pigeonhole
2007-03-05 11:53
2007.03.25
глюк в OpenDialog


15-1171744096
Ne-Ld
2007-02-17 23:28
2007.03.25
Играю в датаминера. Главный вопрос - откуда брать пригодные


2-1172686033
NGPOL
2007-02-28 21:07
2007.03.25
Особенности SELECT





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский