Главная страница
    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.46 MB
Время: 0.025 c
4-82533
miwa
2003-07-25 11:56
2003.09.25
Как можно (если можно) использовать вывод функции Win32Check


3-82055
Vlad
2003-09-02 15:16
2003.09.25
ADO + Access


1-82292
wide
2003-09-14 21:27
2003.09.25
График заданой функции


14-82502
data
2003-09-05 14:30
2003.09.25
сказка о сисадмине - 2


3-82080
DmitryMN
2003-09-05 14:03
2003.09.25
индексы во временных таблицах





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