Здравствуйте Аноним, Вы писали:
А>type TRecord = record
А> DateTime: TDateTime;
А> Point: Integer;
А>end;
А>var
А> a: array [0..n] of TRecord;
А>Вот это надо отсортировать по возрастанию.
А>Первично по DateTime, и вторично по Point.
Но это же не матрица! Здесь просто есть множество некоторых объектов, и есть правило, описывающее отношение между двумя любыми элементами (какой из двух должен стоять в отсортированной последовательности раньше другого). Собственно, нужно описать это правило, а потом применять уже алгоритм сортировки, в зависимости уже от числа
n.
Так вот, функция, определяющая отношение должна иметь следующий вид (сортируем по возрастанию):
boolean function isBigger(a,b:TRecord)
{ Если a должен стоять раньше b, то true. Иначе -- false. }
var res:boolean;
begin
if (a.DateTime < b.DateTime) then res := true
else if (a.DateTime > b.DateTime) then res := false
else { теперь осталось обработать случай (a.DateTime = b.DateTime) }
if (a.Point < b.Point) then res := true
else res := false
isBigger := res;
end;
{Это всё нужно проверить на предмет правильности ;) }
Вроде бы так, но при условии, что TDateTime можно так сравнивать. Если нет, то надо написать функцию, сравнивающую две даты между собой. Например она может выдавать
-1 в случае <
0 в случае =
1 в случае >
а потом использовать её в приведённом выше коде.
Конкретный алгоритм сортировки будет строиться уже на основе отношения порядка, которое мы и создали для элементов типа Trecord.
Удачи!