Сортировкой или упорядочением массива называется расположение его элементов по возрастанию (или убыванию). Если не все элементы различны, то говорят о неубывающем (или невозрастающем) порядке.
Существуют множество различных методов сортировки элементов массива. Мы рассмотрим только один.
Метод "пузырька"
Чтобы уяснить его идею, представьте , что массив (таблица) расположен вертикально. Элементы с большим значением всплывают вверх наподобие больших пузырьков. При первом проходе вдоль массива, начиная проход "снизу", берется первый элемент и поочередно сравнивается с последующими.
При этом:
если встречается более "легкий" (с меньшим значением) элемент, то они меняются местами;
при встрече с более "тяжелым" элементом, последний становится "эталоном" для сравнения, и все следующие сравниваются с ним .
В результате наибольший элемент оказывается в самом верху массива.
Во время второго прохода вдоль массива находится второй по величине элемент, который помещается под элементом, найденным при первом проходе, т.е на вторую сверху позицию, и т.д.
Заметим, что при втором и последующих проходах, нет необходимости рассматривать ранее "всплывшие" элементы, т.к. они заведомо больше оставшихся. Другими словами, во время j-го прохода не проверяются элементы, стоящие на позициях выше j.
Теперь можно привести текст программы упорядочения массива M[1..N]:
begin
for j:=1 to N-1 do
for i:=1 to N-j do
if M[i] > M[i+1] then
begin
k:=M[i]; M[i]:= M[i+1]; M[i+1]:= M[i] ;
end;
end;
{переменная к используется для временного хранения значения i-того элемента массива.Для последующей перестановки местами двух соседних значений }
Задание для самостоятельного решения:
- Написать программу, которая выполняет ввод 7 целочисленных элементов вектора, производит его сортировку по возрастанию и выводит упорядоченные значения на экран;
- Внести в написанную программу изменения, которые позволяют вводить числовой вектор, состоящий из m элементов (чиcло m вводит пользователь, после запуска программы) и затем выводить его на экран упорядоченным по убыванию.
Материал для закрепления темы "Массивы" на Портале "Российская электронная школа"