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

Вниз

как отсортировать данные, не занося ВСЕХ их в массивы?   Найти похожие ветки 

 
Максим   (2012-07-18 17:01) [0]

В этом участке кода я считываю информацию из текстового файлика и записываю в один массив все фамилии, в другой имена, в третий класс, в четвертый балл. Потом я сортирую массив с баллами и от него беру часть с самыми лучшими баллами.
for n:=1 to 51 do
begin
 readln(f,s);
 a[n-1].fam:=copy(s,1,pos(" ",s)-1);
 delete(s,1,pos(" ",s));
 a[n-1].nam:=copy(s,1,pos(" ",s)-1);
 delete(s,1,pos(" ",s));
 a[n-1].kls:=copy(s,1,pos(" ",s)-1);
 delete(s,1,pos(" ",s));
 a[n-1].bal:=StrToInt(s);
end;
closefile(f);
lbl2.caption:=inttostr(n);
for i:=0 to n-2 do
for j:=i+1 to n-1 do
if a[i].bal<a[j].bal then
begin
 x:=a[i];
 a[i]:=a[j];
 a[j]:=x;
end;


Так вот, мне необходимо сделать так, чтобы сортировка происходила сразу в момент чтения файла, т.е. не использовать массивы для записи туда всех-всех данных, а работать исключительно с необходимыми (с теми у кого баллы высокие). Как это реализовать?
Сортировка должна происходить только по ПОСЛЕДНЕМУ числу из строки. Строка выглядит так:
Фамилия Имя Класс Балл

Так вот необходимо отсортировать по баллам и отобрать 45 процентов (с самым большим баллом)


 
Медвежонок Пятачок ©   (2012-07-18 17:37) [1]

стринглист. метод кастомсорт.
если нужен массив, то перенести в массив из стринглиста


 
AV ©   (2012-07-19 12:31) [2]

считать первые 45% в список(массив)
отсортировать
каждое следующее считанное значение, методом половинного деления, вставить в соответствующую позицию, последний выкинуть.


 
Sha ©   (2012-07-19 13:24) [3]

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

P.S. Сортировка тут не требуется.



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

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

Наверх




Память: 0.47 MB
Время: 0.252 c
15-1353081080
Артём
2012-11-16 19:51
2013.03.22
нужен совет!


15-1346949988
Опять я
2012-09-06 20:46
2013.03.22
Как вывести ВЕКТОРНУЮ линию в Delphi?


15-1353184202
Юрий
2012-11-18 00:30
2013.03.22
С днем рождения ! 18 ноября 2012 воскресенье


10-1176745972
Neket
2007-04-16 21:52
2013.03.22
Быстрое заполнение Excel


15-1332793802
Юрий
2012-03-27 00:30
2013.03.22
С днем рождения ! 27 марта 2012 вторник