Добавил:
sofyvits@ya.ru на позитиве Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
186
Добавлен:
10.01.2016
Размер:
116.74 Кб
Скачать

Тема 2.3. Основы структурного программи­рования

План

1. Введение

2. Сортировка пузырьковым методом

3. Сортировка выбором

4. Сортировка вставкой

5. Заключение

  1. Введение

Среди задач, решаемых программистами, наибольшее распространение получили задачи сортировки данных. Подпрограммы сортировки и поиска используются фактически во всех программах, работающих с базами данных, а также в компиляторах, интерпретаторах и в операционных системах.

Сортировка представляет собой процесс упорядочения множества подобных информационных объектов в порядке возрастания или убывания их значений.

Имеется три способа сортировки массивов:

  • сортировка обменом;

  • сортировка выбором;

  • сортировка вставкой.

  1. Сортировка пузырьковым методом

Наиболее известной является сортировка пузырьковым методом. Ее популярность объясняется запоминающимся названием и простотой алгоритма. Сортировка пузырьковым методом использует метод обменной сортировки. Она основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов. Ее название происходит из-за подобия процессу движения пузырьков в резервуаре с водой, когда каждый пузырек находит свой собственный уровень.

Рассмотрим пример процедуры, которая выполняет сортировку элементов массива пузырьковым методом.

type

DataItem = char;

DataArray = array [1..80] of DataItem;

{ сортировка пузырьковым методом }

procedure Bubble(var item: DataArray; count:integer);

var

i,j: integer;

x: DataItem;

begin

for i := 2 to count do

begin

for j := count downto i do

if item[j-1]>item[j] then

begin

x := item[j-1];

item[j-1] := item[j];

item[j] := x;

end;

end;

end; {конец сортировки пузырьковым методом}

В этом случае переменная “item” является массивом элементов “DataItem”, который сортируется, а переменная “count” содержит число элементов в массиве. Сортировка пузырьковым методом имеет два цикла. Поскольку число элементов массива задается переменной “count”, внешний цикл вызывает просмотр массива count 1 раз. Это обеспечивает нахождение каждого элемента в своей позиций после завершения процедуры. Внутренний цикл предназначен для фактического выполнения операций сравнения и обмена. Эта версия сортировки пузырьковым методом может сортировать символьный массив в порядке возрастания значений элементов. Для иллюстрации работы сортировки пузырьковым методом ниже даны результаты каждого этапа сортировки массива "dcab".

Исходное положение: d c a b.

  • первый проход: a d c b;

  • второй проход: a b d c;

  • третий проход: a b c d.

  1. Сортировка выбором

При сортировке выбором выбирается элемент с наименьшим значением и делается его обмен с первым элементом массива. Затем находится элемент с наименьшим значением из оставшихся n-1 элементов и делается его обмен со вторым элементом и т.д. до обмена двух последних элементов. Например, если сортировку выбором применить для массива “bdac”, то будут получены следующие проходы:

  • исходное состояние: b d a c;

  • первый проход: a d b c;

  • второй проход: a b d c;

  • третий проход: a b c d.

Ниже приводится процедура выполняющая сортировку элементов массива выбором.

type

DataItem = char;

DataArray = array [1..80] of DataItem;

procedure Selekt(var item: DataArray; count:integer);

var

i, j, k: integer;

x: DataItem;

begin

for i := i to count-1 do

begin

k := i;

x := item[i];

for j := i+1 to count do { найти элемент с наименьшим значением }

if item[j]<x then

begin

k := j;

x := item[j];

end;

item[k] := item[i]; { обмен }

item[i] := x;

end;

end; { конец сортировки выбором }

  1. Сортировка вставкой

Сортировка вставкой является последней из класса простых алгоритмов сортировки. При сортировке вставкой сначала упорядочиваются два элемента массива. Затем делается вставка третьего элемента в соответствующее место по отношению к первым двум элементам. Затем делается вставка четвертого элемента в список из трех элементов. Этот процесс повторяется до тех пор, пока все элементы не будут упорядочены. Например, для массива “dcab” сортировка вставкой будет проходить следующим образом:

  • исходное состояние: d c a b;

  • первый проход: c d a b;

  • второй проход: a c d b;

  • третий проход: a b c d.

Ниже приводится процедура выполняющая сортировку элементов массива вставкой.

{ сортировка вставкой }

type

DataItem = char;

DataArray = array [1..80] of DataItem;

procedure Inser(var item: DataArray; count:integer);

var

i, l: integer;

x: DataItem;

begin

for i := 2 to count do

begin

x := item[i];

j := i-1;

while (x<item[j]) and (j>0) do

begin

item[j+1] := item[j];

j := j-1;

end;

item[j+1] := x;

end;

end; { конец сортировки вставкой }

  1. Заключение

Решение задачи на ЭВМ, сопровождающееся разработкой программного продукта, ориентировано на использование специализированного инструмента – интегрированной среды разработки приложений. Для того чтобы представить алгоритм решения в понятном для системы программирования виде, избежать синтаксических, семантических и логических ошибок при разработке программы необходим хороший уровень владения языком программирования.

Получение гарантированного качества программного продукта основано на комплексном решении ряда задач, к числу которых относятся: всестороннее изучение проблемы, построение адекватных математических моделей, выбор или разработка численных методов решения, разработка алгоритма и структуры данных, проектирование и кодирование программного продукта, тестирование и отладка.

Литература:

  1. Васюкова Н.Д. Практикум по основам программирования: язык Паскаль. – М.: Наука, 1991. – 210 с.

  2. Введение в язык Паскаль. / Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Учебное пособие. – М.: Наука, 1988. – 320 с.

  3. Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир. 1985. – 245 с.

  4. Джонстон Г. Учитесь программировать / Пер. с англ. – М.: Финансы и статистика, 1989. – 356 с.

Контрольные вопросы:

  1. На чем основывается структурный метод программирования?

  2. Приведите блок-схему алгоритма сортировки пузырьковым методом. Напишите соответствующий текст программы на языке Паскаль.

  3. Приведите блок-схему алгоритма сортировки выбором. Напишите соответствующий текст программы на языке Паскаль.

  4. Приведите блок-схему алгоритма сортировки вставкой. Напишите соответствующий текст программы на языке Паскаль.

Соседние файлы в папке Лекции Информатика и программирование