Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практ.работа №12. Сортировка одномерных массиво....doc
Скачиваний:
1
Добавлен:
13.07.2019
Размер:
412.67 Кб
Скачать

ПППН ОАиП (2 курс) 6 / 6

Практ. раб. №12. Сортировка одномерных массивов

Практическая работа №12. Сортировка одномерных массивов

Цель работы:

  1. Закрепить практические навыки работы с одномерными массивами.

  2. Познакомиться с алгоритмами сортировки одномерных массивов. Краткие теоретические сведения

Массив – это упорядоченная совокупность элементов одного типа с общим именем.

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

Сортировка массива – это процесс перестановки элементов с целью упорядочивания их в соответствии с каким-либо критерием.

Например, если имеется массив целых чисел А, то после сортировки по возрастанию должно выполнятся условие:

А[1]<= A[2]<=...<= A[N], где N – наибольший индекс массива А.

Можно сортировать массивы типов INTEGER, REAL, CHAR, STRING, так как можно сравнивать переменные этих типов.

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

Сортировка методом прямого обмена (метод пузырька)

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

Этот процесс повторяется на единицу меньше раз, чем элементов в массиве.

Алгоритм пузырьковой сортировки на языке Паскаль для массива из n элементов:

For j:=1 to n-1 do

For i:=1 to n-j do

If A[i]>A[i+1] then

Begin

Dop:=A[i];

A[i]:=A[i+1];

A[i+1]:=Dop

End;

Сортировка методом выбора

  1. Просматривая массив от первого элемента, найти минимальный элемент и поменять местами первый элемент и минимальный.

  2. Просматривая массив от второго элемента, найти минимальный и поменять местами второй и минимальный.

  3. И так далее до последнего элемента.

Алгоритм сортировки методом выбора на языке Паскаль для массива из n элементов:

for i:=1 to N-1 do

begin

{поиск минимального элемента в части массива от a[i] до a[N]}

min:=i;

for j:=i+1 to N do

if a[j]<a[min] then min:=j;

{меняем местами a[i] и a[min] }

buf:=a[i];

a[i]:=a[min];

a[min]:=buf;

Пример оформления практической работы №12 по теме «Сортировка одномерных массивов»

  1. Постановка задачи.

  2. Используемые алгоритмы.

  3. Список используемых переменных.

  4. Текст программы.

  5. Тестовый пример.

  6. Протокол работы программы.

ЗАДАНИЕ 1.

Постановка задачи

Отсортировать по возрастанию методом пузырька массив, состоящий из 5 целых чисел.

Используемые алгоритмы

Циклический – для ввода, сортировки и вывода массива.

Список используемых переменных

Входные данные:

a – целочисленный массив;

Выходные данные:

a – целочисленный массив, отсортированный по возрастанию;

Промежуточные величины:

i – номер шага сортировки;

k – индекс элемента массива, с которым сравнивается соседний элемент массива;

buf – используется при обмене местами двух элементов массива

Текст программы на Turbo Pascal:

Program Puzir;

Const N=5;

var a:array[1..N] of integer;

k:integer; { счетчик циклов }

i:integer; { текущий индекс элемента массива }

buf:integer;

begin

writeln('Сортировка массива методом пузырька');

write('Ввод массива');

for i:=1 to N do

begin

write(i' элемент->');

readln(a[i]);

end;

writeln('Сортировка');

for k:=1 to N-1 do

begin

for i:=1 to N-k do

if a[i]>a[i+1] then

begin

{обменяем местами i-й и i+1-й элементы}

buf:=a[i];

a[i]:=a[i+1];

a[i+1]:=buf;

end;

{вывод массива}

for i:=1 to N do write(a[i],' ');

writeln;

readln

end;

writeln('Массив отсортирован!');

readln

end.

Тестовый пример

Если исходный массив А: 12 -3 56 47 10

То отсортированный массив А: -3 10 12 47 56

Протокол выполнения программы

Сортировка массива.

Ввод массива.

1 элемент -> 12

2 элемент -> -3

3 элемент -> 56

4 элемент -> 47

5 элемент -> 10

Сортировка

-3 12 47 10 56

-3 12 10 47 56

-3 10 12 47 56

-3 10 12 47 56

Массив отсортирован!

ЗАДАНИЕ 2.

Постановка задачи

Отсортировать по возрастанию методом выбора массив, состоящий из 5 целых чисел.

Используемые алгоритмы

Циклический – для ввода, сортировки и вывода массива.

Список используемых переменных

Входные данные:

a – целочисленный массив;

Выходные данные:

a – целочисленный массив, отсортированный по возрастанию;

Промежуточные величины:

i – индекс элемента массива, с которого начинается поиск минимального;

j – индекс элемента массива, с которым сравнивается текущий минимальный элемент массива;

min – индекс минимального элемента

Текст программы на Turbo Pascal:

Program vibor;

const N=5;

var a:array[1..N] of integer;

i:integer; {номер элемента, от которого ведется поиск мин. эл-та}

min:integer; {индекс минимального элемента в части массива от i до верхней границы}

j:integer; {номер элемента, сравниваемого с минимальным}

buf:integer; {буфер, используемый при обмене элементов}

k:integer; {индекс элементов массива}

begin

writeln('Сортировка массива');

writeln('Ввод массива');

for k:=1 to N do

begin

write(k,' элемент ->');

read(a[k]);

end;

writeln('Сортировка ');

for i:=1 to N-1 do

begin

{поиск минимального элемента в части массива от a[i] до a[N]}

min:=i;

for j:=i+1 to N do

if a[j]<a[min] then min:=j;

{меняем местами a[i] и a[min] }

buf:=a[i];

a[i]:=a[min];

a[min]:=buf;

{выведем массив}

for k:=1 to N do write(a[k],' ');

writeln;

readln

end;

writeln('Массив отсортирован!');

readln

end.

Тестовый пример

Если исходный массив А: 12 -3 56 47 10

То отсортированный массив А: -3 10 12 47 56

Протокол выполнения программы

Сортировка массива.

Ввод массива.

1 элемент -> 12

2 элемент -> -3

3 элемент -> 56

4 элемент -> 47

5 элемент -> 10

Сортировка

-3 12 56 47 10

-3 10 56 47 12

-3 10 12 47 56

-3 10 12 47 56

Массив отсортирован!

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

  1. Поэтапно разработайте решение индивидуальной задачи (см. варианты заданий к практической работе №12):

  • используемые алгоритмы;

  • список используемых переменных;

  • текст программы;

  • тестовые примеры.

  1. Наберите текст программы и выполните ее отладку.

  2. Проверьте результаты тестовых примеров.

  3. Оформите отчет о выполнении индивидуального задания.

  4. Ответьте на контрольные вопросы.

Варианты заданий к практической работе №12

Вариант 1

  1. Задать два массива по 6 целых чисел. Отсортировать оба массива: первый – по возрастанию методом пузырька, второй – по убыванию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 2

  1. Задать два массива по 8 вещественных чисел. Отсортировать оба массива: первый – по убыванию методом пузырька, второй – по возрастанию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 3

  1. Задать два массива по 7 символов. Отсортировать оба массива: первый – по возрастанию методом выбора, второй – по убыванию методом пузырька. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 4

  1. Задать два массива по 5 целых чисел. Отсортировать оба массива: первый – по убыванию методом возрастанию пузырька, второй – по методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 5

  1. Задать два массива по 9 вещественных чисел. Отсортировать оба массива: первый – по возрастанию методом выбора, второй – по убыванию методом пузырька. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 6

  1. Задать два массива по 4 символа. Отсортировать оба массива: первый – по убыванию методом выбора, второй – по возрастанию методом пузырька. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 7

  1. Задать два массива по 9 целых чисел. Отсортировать оба массива: первый – по возрастанию методом выбора, второй – по убыванию методом пузырька. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 8

  1. Задать два массива по 6 вещественных чисел. Отсортировать оба массива: первый – по убыванию методом пузырька, второй – по возрастанию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 9

  1. Задать два массива по 5 символов. Отсортировать оба массива: первый – по возрастанию методом выбора, второй – по убыванию методом пузырька. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 10

  1. Задать два массива по 7 целых чисел. Отсортировать оба массива: первый – по убыванию методом пузырька, второй – по возрастанию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 11

  1. Задать два массива по 10 вещественных чисел. Отсортировать оба массива: первый – по возрастанию методом выбора, второй – по убыванию методом пузырька. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 12

  1. Задать два массива по 8 символов. Отсортировать оба массива: первый – по возрастанию методом пузырька, второй – по убыванию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 13

  1. Задать два массива по 5 целых чисел. Отсортировать оба массива: первый – по убыванию методом пузырька, второй – по возрастанию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 14

  1. Задать два массива по 9 вещественных чисел. Отсортировать оба массива: первый – по убыванию методом выбора, второй – по возрастанию методом пузырька. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 15

  1. Задать два массива по 4 символа. Отсортировать оба массива: первый – по убыванию методом пузырька, второй – по возрастанию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 16

  1. Задать два массива по 10 целых чисел. Отсортировать оба массива: первый – по убыванию методом пузырька, второй – по возрастанию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 17

  1. Задать два массива по 7 вещественных чисел. Отсортировать оба массива: первый – по возрастанию методом выбора, второй – по убыванию методом пузырька. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Вариант 18

  1. Задать два массива по 6 символов. Отсортировать оба массива: первый – по возрастанию методом пузырька, второй – по убыванию методом выбора. Выводить на экран каждый шаг сортировки.

  2. Изменить программу так, чтобы задавались массивы произвольного размера. Ввод, вывод и сортировку массивов организовать в виде процедур.

Контрольные вопросы к практической работе №12:

  1. Какой алгоритм сортировки одномерного массива основан на поиске минимального элемента?

  2. Какой алгоритм сортировки одномерного массива основан на обмене соседних элементов?

  3. Можно ли сортировку одномерного массива методом выбора организовать с помощью функции? Почему?

  4. Можно ли сортировку одномерного массива методом пузырька организовать с помощью функции? Почему?

  5. Какой тип алгоритма лежит в основе алгоритмов сортировки одномерного массива?