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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
14-82389
Karnegi.
2003-09-04 14:28
2003.09.25
Почемы вы не поставите себе Delphi7????


3-82161
Ragazor
2003-09-01 17:06
2003.09.25
SQL INSERT


3-82032
denis24
2003-09-02 20:12
2003.09.25
select из excel с помощью ado


14-82458
ЦЦЦЦ
2003-09-06 16:10
2003.09.25
Проблема с RxLib??? Помгите плиз.


6-82367
NetKnight
2003-07-19 23:46
2003.09.25
List в HTTP протоколе