Главная страница
    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
1-82316
WihOut Any ...
2003-09-13 20:54
2003.09.25
Как отловить клик вне модальной формы?


3-82040
denick
2003-09-03 10:27
2003.09.25
Мастера, помогите пожалуйста.


1-82291
Micah'GF
2003-09-15 16:59
2003.09.25
Компонент с цветами


14-82504
Jacob
2003-09-04 18:01
2003.09.25
Google toolbar


3-82084
igor_b
2003-09-05 14:03
2003.09.25
MSSQL 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
Английский Французский Немецкий Итальянский Португальский Русский Испанский