Главная страница
    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.45 MB
Время: 0.072 c
1-1300455452
TStas
2011-03-18 16:37
2013.03.22
Как получить версию Экселя?


2-1340622845
Ele
2012-06-25 15:14
2013.03.22
Цикл по полям записи


15-1336681802
Юрий
2012-05-11 00:30
2013.03.22
С днем рождения ! 11 мая 2012 пятница


2-1348073809
123456789igor
2012-09-19 20:56
2013.03.22
цикл в цикле


2-1332009127
pooh001
2012-03-17 22:32
2013.03.22
регистронезависимый запрос SQL (Absolute DB или Accuracer)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский