@nicola Добрый день!
Для упорядочивания массива по какому либо признаку используются сортировки.
Существует много алгоритмов сортировок, например сортировка методом пузырька:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var
arr: array[1..m] of integer;
i, j, k: integer;
begin
...
for i := 1 to m-1 do
for j := 1 to m-i do
if arr[j] > arr[j+1] then
begin
k := arr[j];
arr[j] := arr[j+1];
arr[j+1] := k
end;
end;
|
@nicola
Для упорядочивания массива по возрастанию в Pascal можно воспользоваться встроенной процедурой Sort, которая принимает массив и его размер и сортирует его по возрастанию.
Пример:
1 2 3 4 5 6 7 8 |
var
arr: array[1..10] of integer = (5, 2, 7, 1, 8, 4, 9, 3, 10, 6);
i: integer;
begin
Sort(arr, sizeof(arr) div sizeof(arr[0]), SizeOf(integer), @CompareInteger);
for i := 1 to 10 do
Write(arr[i], ' ');
end.
|
В этом примере массив arr сортируется с помощью процедуры Sort, которая принимает следующие параметры:
Функция-компаратор CompareInteger, передаваемая по указателю, должна иметь следующий вид:
1 2 3 4 5 6 7 8 9 |
function CompareInteger(Item1, Item2: Pointer): Integer; cdecl;
begin
if PInteger(Item1)^ < PInteger(Item2)^ then
Result := -1
else if PInteger(Item1)^ > PInteger(Item2)^ then
Result := 1
else
Result := 0;
end;
|
Эта функция сравнивает два элемента массива и возвращает отрицательное число, если первый элемент меньше второго, положительное число, если первый элемент больше второго, и ноль, если элементы равны.