Текущий архив: 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