Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.rtf
Скачиваний:
21
Добавлен:
11.04.2015
Размер:
39.06 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 10

Сортировка массивов методом «пузырька»

Цель работы: Приобрести навыки использования алгоритмов сортировки при обработке одномерных массивов.

Литература : В.П. Попов TURBO PASKAL .для школьников. Версия 7.0.

Краткие теоретические сведения:

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

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

Массив состоит из фиксированного числа элементов одного и того же типа. Для определения, или описания, массива необходимо задать тип его элементов, а также их количество и способы нумерации.

Описание массива имеет следующий вид :

var <имя массива > :array [ n1..n2 ] of < тип элементов > ;

где n1- начальный индекс массива , n2- конечный индекс. Индексы при описании массива задаются константами , обычно целого или символьного типа ( вещественный тип для индексов массива недопустим).Тип элементов массива может быть любой.

Примеры описания массивов :

var a :array [0..10] of integer ; {массив из 11элементов целого типа }

var b : [-5..9] of real ; { массив из 15 элементов вещест. типа }

При обращении к элементам массива в качестве индексов можно использовать константы, переменные и выражения. Например :

a[0] :=10

b[i*2] :=3.1415926535

Необходимо следить за тем, чтобы индекс массива не выходил за диапазон, заданный при описании массива. Элементы массива можно использовать везде, где допустимо использование простых переменных того же типа.

Для автоматизации процесса отладки можно использовать типизированное описание массива в блоке CONST

Формат :

Имя массива : описание массива = ( список значений элементов массива);

Пример

Mass: array [1..7] of byte = ( 1,5,6,8,3,5,9);

WW : array [1..7] of real = ( 11.34, -67.5 , 987.6 , 8.00 , 3.98 , -5.00 , -7.09);

Заполнение массива исходными данными осуществляется несколькими способами: вводом с клавиатуры, счетчиком случайных чисел, и вычислением с помощью формулы.

Например :

For i:=1 to 28 do

Begin write(‘ a[‘, I,’]=’ );read(a[i] ); end;{ с клавиатуры}

Randomize;

For t :=1 to 20 do ter[t]:=random(40); { счетчиком случайных чисел}

H:=10;

For d:=1 to h do begin dip [d]:=d*d; { формулой }

При решении задач массивы используются очень часто, и зачастую эти массивы необходимо отсортировать по возрастанию или по убыванию. Существуют много различных алгоритмов сортировки. Одним из самых популярных является- «пузырьковый» метод, который основан на том, что в процессе исполнения алгоритма более «легкие» элементы постепенно «всплывают». Особенностью данного алгоритма является сравнение не каждого элемента со всеми, а сравнение в парах соседних элементов. Алгоритм пузырьковой сортировки по убыванию состоит в последовательных просмотрах снизу вверх (от начала к концу) массива М. Если соседние элементы таковы, что выполняется условие, согласно которому элемент справ больше элемента слева, то выполняется обмен этих элементов.

Порядок выполнения работы:

  1. Получить допуск к работе у преподавателя.

  2. Ввести текст программы.

  3. Провести отладку программы.

  4. Выполнить программу, провести анализ результатов и, убедившись в правильности решения, предъявить их преподавателю.

Содержание отчета:

1.Задание к лабораторной работе.

2.Схема алгоритма и программа на языке Паскаль.

3.Результаты расчета

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

  1. .Алгоритм обменной сортировки одномерного массива.

  2. Алгоритм сортировки вставками.

  3. Алгоритм сортировки выбором

Задание к лабораторной работе:

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

1. Пример программы для заполнения массива из 20 элементов целыми случайными числами в диапазоне от 0 до 99. и сортировки элементов массива по возрастанию.

Const n= 20

Var m :array [1..n] of integer ;

I,j temp for i :=1 to n do :integer ;

Begin

Writeln (‘исходный массив:’);

For I:=1 to n do write (M[I]), ‘ ‘); Writeln;

A:=0;

For I:=2 to n do {сортировка «пузырьковым» методом по невозрастанию}

Begin

For J:=n downto I do

Begin

A:=A+1;

If M [J-1]<M[J] then {если элемент справа больше элемента слева, то «вытеснить» его влево- пузырек «всплывает»}

Begin

K:=M[J-1]; {обмен значениями этих элементов}

M[J-1]:=M[J];

M[J]:=K;

{печатать текущее состояние массива после каждой перестановки}

For L:=1 to n do Write (‘ ’, M[L]);

Writeln (‘Число итерации=’,A);

End;

End;

End; { завершение сортировки}

End.

Самостоятельная работа :

Дан одномерный массив целых чисел . Требуется отсортировать его так, чтобы его элементы были расположены в порядке неубывания ( а[i] <= a[i+1])

Написать программу, выполняющую сортировку введенного массива . Ввод содержимого массива осуществляется одним из 2 способов:

  • через датчик случайных чисел;

  • через типизированное описание массива в блоке CONST