Если число[i] > число[i+1], то поменять их местами.
3. Вывести отсортированную последовательность.
4. Закончить.
Программа для этого алгоритма будет иметь вид
Program Sort;
Const
Nmax = 100;
Var
X : Array [1..Nmax] Of Real;
A : Real;
n, k, i : Integer;
Begin
Writeln('Введите количество чисел');
Readln(n);
Writeln('Введите массив чисел');
For i := 1 To n Do
Read (X[i]);
{ Сортировка }
For k := 1 To n-1 Do
For i := 1 To n-1 Do
If X[i] > X[i+1] Then
Begin
A:=X[i];
X[i]:=X[i+1];
X[i+1]:=A
End;
Writeln('Отсортированный массив чисел:');
For i:=1 To n Do
Write (X[i]);
End.
Глубину просмотра можно уменьшать, основываясь на том, что большие числа "опускаются" вниз (в конец последовательности) и затем не переставляются:
For k := 1 To n-1 Do
For i := 1 To n-k Do
If X[i] > X[i+1] Then
. . . . . . . .
Сокращение количества просмотров улучшает временные характеристики метода. Из алгоритма можно понять, что если на одном из просмотров не было перестановок, то их не будет и потом – данные уже отсортированы, процесс сортировки следует закончить. Такой подход дает значительную экономию времени при работе с большими "почти отсортироваными" массивами. Примером такого массива может быть упорядоченный по алфавиту список сотрудников фирмы, на которую время от времени принимают новых работников.
Приведем алгоритм для этого метода.
В этом алгоритме используется переменная "Перестановка_есть", которой сначала присваивается значение "истина", а как только в одном из просмотров не будет перестановок – ей присвоится значение "ложь". Это позволит прервать выполнение цикла "Пока".