
- •Задание
- •Содержание
- •Введение
- •Теоретическая часть.
- •Типы данных языка Паскаль – простые и структурированные
- •Условный оператор If... Then. Формат, пример, блок–схема
- •Проверяемое условие (логическое выражение)
- •Использование оператора if-then-elsEодноуровневой структуры
- •Использование оператора if-then-elsEмногоуровневой структуры
- •Операторы цикла While .. .Do и Repeat.. .Until. Формат, пример, блок–схема
- •Классификация циклов Оператор цикла while (Цикл с предусловием)
- •Оператор цикла repeat (Цикл с постусловием)
- •Оператор цикла с фиксированным количеством повторов For. Формат, пример, блок–схема
- •Структура программы на языке Паскаль
- •Алгоритм сортировки одномерного массива методом «пузырька»
- •Пример сортировки методом пузырька
- •Сортировка методом пузырька
- •Блок–схема сортировки методом пузырька.
- •Практическая часть
- •3) Имеется 11 треугольных деталей, у которых известна сторона. Определить их площадь. Использовать для исходных данных и результата соответствующий массив. Оформить вывод в виде таблицы.
- •4) Создать массив из 10 записей с полями «наименование изделия», «цена». Вывести массив записей на экран в виде таблицы. Упорядочить массив по 1- му полю. Вывести результат.
- •Заключение
- •Список использованной литературы
Алгоритм сортировки одномерного массива методом «пузырька»
Алгоритм сортировки одномерного массива методом «пузырька». Описание алгоритма. Блок-схема и программа сортировки по возрастанию массива типа real из 7 элементов.
Описание алгоритма
Классификация методов сортировки не всегда четко определена. Остановимся на методе, в котором обмен двух элементов является основной характеристикой процесса. Приведенный ниже алгоритм сортировки простым обменом основан на принципе сравнения и обменапары соседних элементов до тех пор, пока не будут рассортированы все элементы.
Как и в предыдущих методах простого выбора, мы совершаем повторные проходы по массиву, каждый раз просеивая наименьший элемент оставшегося множества, двигаясь к левому концу массива. Если, для разнообразия, мы будем рассматривать массив, расположенный вертикально, а не горизонтально и – при помощи некоторого воображения - представим себе элементы пузырьками в резервуаре с водой, обладающими «весами», соответствующими их ключам, то каждый проход по массиву приводит к «всплыванию» пузырька на соответствующий его весу уровень (см. табл. 2). Этот метод широко известен как сортировка методом пузырька. Его простейший вариант приведен в программе 1.
Пример сортировки методом пузырька
procedure bubblesort;
var i, j: index; x: item;
begin for i := 2 to n do
begin for j := n downto i do
if a[j-1].key > a[j].key then
begin x := a[j-1]; a[j-1] := a[j]; a[j] := x
end
end
end {bubblesort}
Сортировка методом пузырька
Этот алгоритм легко оптимизировать. Пример в табл. 2 показывает, что три последних прохода никак не влияют на порядок элементов, поскольку те уже рассортированы. Очевидный способ улучшить данный алгоритм – это запоминать, производился ли на данном проходе какой-либо обмен. Если нет, то это означает, что алгоритм можно продолжить, если запоминать не только сам факт обмена, но и место (индекс) последнего обмена. Ведь ясно, что все пары соседних элементов с индексами, меньшими этого индекса k, уже расположены в нужном порядке. Поэтому следующие проходы можно заканчивать на этом индексе, вместо того чтобы двигаться до установленной заранее нижней границыi. Однако внимательный программист заметит здесь странную асимметрию: один неправильно расположенный «пузырек» в «тяжелом» конце рассортированного массива всплывает на место за один проход, а неправильно расположенный элемент в «легком» конце будет опускаться на правильное место только на один шаг на каждом проходе. Например, массив
12 18 42 44 55 67 94 06
будет рассортирован при помощи метода пузырька за один проход, а сортировка массива
94 06 12 18 42 44 55 67
потребует семи проходов. Эта неестественная асимметрия подсказывает третье улучшение: менять направление следующих один за другим проходов.
Анализ сортировки методом пузырька.
Число сравнений в алгоритме простого обмена равно
,
минимальное, среднее и максимальное количества пересылок (присваиваний элементов) равны
,
,
.
Блок–схема сортировки методом пузырька.
Программа сортировки
Program Puzir;
var
A: array [1..7] of real;
N, j, k: integer;
B: real;
C: boolean;
begin
N := 7;
WriteLn('Ввод массива');
for j := 1 to N do
begin
Write('A', j, '=');
ReadLn(A[j]);
end;
WriteLn('Исходный массив');
for j := 1 to N do
Write(A[j]:8:1);
WriteLn;
k := N;
repeat
C := False;
for j := 2 to k do
begin
if A[j - 1] > A[j] then
begin
B := A[j - 1];
A[j - 1] := A[j];
A[j] := B;
C := True;
end;
end;
k := k - 1;
until not C;
WriteLn('Отсортированный массив');
for j := 1 to N do
Write(A[j]:8:1);
WriteLn;
ReadLn;
end.