Алгоритм: сравниваем последовательно, начиная с первого, соседние элементы и если предыдущий элемент больше последующего, меняем их местами. После первого просмотра самый большой элемент окажется на своем месте - станет последним элементом массива.
Второй просмотр: рассматриваем часть массива с первого до предпоследнего. Очередной самый большой элемент станет предпоследним.
Количество просмотров элементов массива равно N-1. В примере, отмечены цветом те элементы, которые уже стоят на своих местах и в очередном просмотре не участвуют.
Первый просмотр
Исходный массив
Сравниваем 1 и 2
Сравниваем 2 и 3
Сравниваем 3 и 4
Сравниваем 4 и 5
Второй просмотр
Исходный массив
Сравниваем 1 и 2
Сравниваем 2 и 3
Сравниваем 3 и 4
Третий просмотр
Исходный массив
Сравниваем 1 и 2
Сравниваем 2 и 3
Четвертый просмотр (последний)
Исходный массив
Сравниваем 1 и 2
Реализуем этот алгоритм (N-число элементов массива):
For k:=1 To N-1 Dо
For i:=1 To N-k Do
If A[i]>A[i+1] Then Begin
T:=A[i]; A[i]:=A[i+1]; A[i+1]:=T;
End; {If}
Так как коды символов упорядочены в соответствии английским и русским алфавитом, то этим алгоритмом можно сортировать массивы символов и массивы символьных строк.
Запишем целиком программу с процедурой сортировки массива
Const nmax=100;
Type vector=array[1..nmax] of Integer;
Var a: vector;
i, n: Integer;
Procedure sort(Var a: vector; n: integer);
Var k, i, T: integer;
Begin
For k:=1 To N-1 Do
For i:=1 To N-k Do
If A[i]>A[i+1] Then Begin
T:=A[i]; A[i]:=A[i+1]; A[i+1]:=t;
End;
End;
Begin
Write ('Размер массива= '); Readln(n);
Write ('Вводите элементы через пробел или Enter');