@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; |
Эта функция сравнивает два элемента массива и возвращает отрицательное число, если первый элемент меньше второго, положительное число, если первый элемент больше второго, и ноль, если элементы равны.