Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Вниз

можно ли сортировать массив?   Найти похожие ветки 

 
MadGhost   (2003-09-12 10:52) [0]

добрый день всем мастерам, скажите пожалйуста,
есть массив из записи примерно привожу
type
a=record
anum:char[8];
bnum:char[15];
day:char[2];
month:char[2];
year:char[4];
time:char[8];
end;

массив большой, примерно около 7500 записей, сортировать нужно по полю anum,day,month, и time желательно.

я просто с сортировкой в первые сталкиваюсь, и ниче про это не знаю :(


 
Владислав   (2003-09-12 10:53) [1]

Можно.


 
MadGhost   (2003-09-12 10:57) [2]

:))) а как?


 
Владислав   (2003-09-12 11:00) [3]

Используй алгоритм быстрой сортировки. Эго реализацию можешь увидеть в TStringList.CustomSort, например. Как сравнивать значения полей в записи, надеюсь, не надо объяснять? :)


 
афвуд   (2003-09-12 11:01) [4]

function Compare(A1,A2:a):integer;
begin
if A1.anum>A2.anum then begin result=1; exit;
if A2.anum>A1.anum then begin result=2; exit;

if A1.bnum>A2.bnum then begin result=1; exit;
if A2.bnum>A1.bnum then begin result=2; exit;

if A1.day>A2.day then begin result=1; exit;
if A2.day>A1.day then begin result=2; exit;

if A1.time>A2.time then begin result=1; exit;
if A2.time>A1.time then begin result=2; exit;
end;

//Сама сортировка:
f:array of a;//типы надо по нормальному называть а не так
begin
//сюда вставишь любой алгоритм сортировки
//их можно найти - выберешь там алгоритм слиянием
//он один из самых быстрых
end;

//и последнее замечание
//в функции сравнение придётся тебе сначала
//преобразовывать данные. Допустим дату из char в DateTime
//а уж потом сравнивать


 
[lamer]Barmaglot   (2003-09-12 11:02) [5]

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

Обычно сортируют сравнивая две записи в таблице по порядку, пока не дойдешь до конца.

Если быстро, то все намного сложнее смотри http://algolist.manual.ru/


 
афвуд   (2003-09-12 11:02) [6]

Надеюсь понятно как юзать функцию Compare?


 
Serginio666   (2003-09-12 14:17) [7]

Посмотри
http://www.rsdn.ru/Forum/Message.aspx?mid=377407&only=1

Правда замени

Move(Pointer(BeginArray +((((L+R-BeginArray-BeginArray) div len) shr 1)* len ))^,MidlVar^,Len);

на

Move(Pointer(L +((((R-l) div len) shr 1)* len ))^,MidlVar^,Len);



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

Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.01 c
14-82394
Vlad Oshin
2003-09-04 17:50
2003.09.25
Флейм. Сигареты легкие или тяжелые?


1-82249
Dark Elf
2003-09-15 14:05
2003.09.25
Password Edit


14-82462
Омлет
2003-09-07 17:07
2003.09.25
Именинники 7 сентября !


4-82565
Сергеич
2003-07-25 08:38
2003.09.25
Данные из другой программы


3-82160
Akni
2003-09-03 14:45
2003.09.25
Параметры в StoredProc





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