Сортировка массивов
Что изменилось?
ЧТО ДАЛЬШЕ ? Поменяем местами голубой и лиловый прямоугольники.
Все прямоугольники расположены в порядке увеличения
Необходимость отсортировать какие-либо величины возникает в программировании очень часто. Необходимость отсортировать какие-либо величины возникает в программировании очень часто. Существует разные способы сортировки массивов. Существует разные способы сортировки массивов. Задача этого урока – рассмотреть алгоритм сортировки массива по возрастанию.
Сформулируйте определение сортировки
Сортировка - это процесс упорядочения заданного множества объектов в некотором, заранее определённом порядке.
Рассмотрим один из алгоритмов сортировки
Сортировка обменом «пузырьковая» сортировка Принцип метода: Слева на право поочерёдно сравниваются два соседних элемента,
Сортировка обменом «пузырьковая» сортировка Если их взаимное расположение не соответствует заданному условию упорядоченности, то они меняются местами
Сортировка обменом «пузырьковая» сортировка Далее берутся два следующих соседних элемента и так до конца массива
Сортировка обменом «пузырьковая» сортировка После одного прохода на последней n-ой позиции массива будет стоять максимальный элемент («всплыл» первый «пузырёк»)
Сортировка обменом «пузырьковая» сортировка Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполнятся до n-1 – го элемента
Для реализации этого метода сортировки будем использовать алгоритм перестановки 11 5 C:=A АВ С
Сортировка обменом «пузырьковая» сортировка 11 5 АВ С
Сортировка обменом «пузырьковая» сортировка A:=B АВ С
Сортировка обменом «пузырьковая» сортировка B:=C АВ С
5 11 АВ С
Сортировка обменом «пузырьковая» сортировка Схема алгоритма:
Сортировка обменом «пузырьковая» сортировка
! Первый и второй элементы стоят на своих местах
В результате перестановок мы получим отсортированный по возрастанию массив
135711
Данный массив отсортирован по не убыванию13378 Данный массив отсортирован по возрастанию
Данный массив отсортирован по убыванию Данный массив отсортирован по не возрастанию87711
Программа на Pascal i:=1; repeat if Vector[i]> Vector[i+1] then begin B:=Vector[i]; Vector[i]:=Vector[i+1]; Vector[i+1]:= B; end; i:=i+1; until i>5-k;
Программа на Pascal for k:=1 to 4 do begin i:=1; repeat if Vector[i]> Vector[i+1] then begin B:=Vector[i]; Vector[i]:=Vector[i+1]; Vector[i+1]:= B; end; i:=i+1; until i>5 - k; end;
Программа, реализующая данный алгоритм uses Crt; type TVector=array [1..5] of real; var Vector:Tvector; B: real; i,k :integer; begin Clrscr; for i:=1 to 5 do Read (Vector[i]); for k:=1 to 4 do begin i:=1; repeat if Vector[i]> Vector[i+1] then begin B:=Vector[i]; Vector[i]:=Vector[i+1]; Vector[i+1]:= B; end; i:=i+1; until i>5-k; end; for i:=1 to 5 do write(Vector[i]:8:2); end.