Упорядочение массива по возрастанию.
Упорядочения массивов по какому-либо признаку называются также сортировками. Существуют различные методы сортировок, различающиеся, в основном, по скорости получения результата. Рассмотрим один из них — «метод пузырька». Пусть имеется последовательность чиселa1, а2, ..., an, которую необходимо упорядочить по возрастанию. Зафиксируем первый элемент и будем последовательно сравнивать его со стоящими справа. Если какой-то из элементов справа окажется меньше первого, то мы поменяем местами этот элемент с первым и продолжим сравнение уже нового элемента, стоящего на первом месте, с оставшимися справа числами. Если снова выявится элемент, меньший зафиксированного, то повторим перестановку. В результате первого просмотра последовательности на первом месте окажется наименьший из всех элементов, т. е. он, как более «легкий», как бы всплывает наверх (отсюда и название метода — «метод пузырька»). Теперь зафиксируем второй элемент и повторим просмотр, выполняя при необходимости перестановки элементов, и т. д. Уяснив идею решения, остановимся на двух вопросах: каким образом фиксировать элементы и как осуществить перестановку двух элементов? Чтобы при переборе элементов, стоящих справа от проверяемого, не менялся индекс последнего, индексы фиксируемого и стоящих правее него элементов должны быть различными: i и j. Индекс i изменяется от 1 до п — 1, индекс j всегда на 1 больше i и пробегает все значения от i + 1 до n. Для каждого значения i индекс j должен последовательно принять все допустимые значения, следовательно, конструкция программы, отражающая полный перебор всех элементов и их упорядочение по возрастанию, представляет собой двойной цикл. При перестановке двух элементов используется третья переменная. Перестановка местами (обмен значениями в памяти) двух переменных а и b выглядит следующим образом:
1) с: = а;
2) a: = b;
3) b: = с.
Программа сортировки методом пузырька имеет вид:
programР14;
constn = 7;
vara :array[ 1.. n ]of real;i, j:integer;c:real;
Begin
fori: = 1tondo
Begin
write(‘a [‘, i, ‘] = ‘);
readln(a [ i ])
end;
fori: = 1ton - 1do
forj: = i + 1tondo
ifa [ i ] > a [ j ]
Then begin
c: = a [ i ];
a[i]:= a[j];
a [ j ]: = c
end;
writeln (‘упорядоченный по возрастанию массив ‘);
fori:= 1tondo
write(a [ i ]);
End.