Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекций по программированию.doc
Скачиваний:
168
Добавлен:
22.03.2016
Размер:
1.09 Mб
Скачать

2. Типовые алгоритмы и их блок-схемы.

Нахождение суммы и произведения значений элементов числового массива.

При решении многих задач возникает необходимость вычисления суммы или произведения числового ряда a1, a2, …, an:

Обычно для этого используется циклический процесс, перед началом которого переменной, используемой для обозначения результата, присваивается начальное значение (S=0 при вычислении суммы иP=1 при вычислении произведения). Блок-схемы алгоритмов показаны на рис.2.

а)

Сумма

Ввод N, A

S : = 0

i : = 2, …, N

S := S + A(i)

Вывод S

б)

Произведение

Ввод N, A

P : = 1

i := 2, …, N

P := P * A(i)

Вывод P

Конец Конец

Рис.2. Блок-схема алгоритма вычисление суммы (а) и

произведения (б) числового ряда

На этих схемах A – имя массива,N– число элементов,i – параметр цикла.

Нахождение наибольшего и наименьшего значений в числовом массиве.

Дан числовой массив М (i),i= 1, 2, …,N. Необходимо определить номер элемента с наибольшим значением.

Начало

Ввод N, M

Nmax : = 1

Mmax : = M(1)

i := 2, …, N

да

M(i) > Mmax Mmax : = M(i)

Nmax : = i

нет

Вывод Nmax,

Mmax

Конец

Рис.3. Блок-схема алгоритма нахождения

наибольшего элемента массива М

Здесь используются две вспомогательные переменные MmaxиNmax.Первая предназначена для запоминания значения элемента, вторая – для его порядкового номера. Перед началом цикла этим переменным присваиваются начальные значения – параметры первого элемента массива. На каждом шаге цикла текущий элемент сравнивается сMmax и если он оказывается больше,Mmax получает новое значение, одновременно запоминается номер этого элемента.

По окончании цикла переменные MmaxиNmaxбудут равны соответственно максимальному значению в массивеMи порядковому номеру максимального элемента.

Примечание. Для того, чтобы отыскать наименьший элемент в заданном массиве достаточно в приведенном алгоритме заменить имена переменныхMmaxиNmax на MminиNmin и в цикле проверять выполнение условия вместо условияM(i) < Mmin.

Кроме того, за один проход можно получить обе величины: и MmaxиMmin. Для этого на каждом шаге цикла нужно проверять два условия –M(i) < Mmin иM(i) > Mmax.Bи при необходимости изменять значения либоMmin, либоMmax.

Сортировка числового массива.

Пусть задан числовой массив М, содержащийN элементов, и необходимо его упорядочить его по возрастанию, то есть перенумеровать элементы этого массива так, чтобы выполнялось условиеМ 1М 2…М N.

Существует несколько вариантов алгоритма сортировки. Один из них получил название «метод пузырька» и заключается в следующем.

Вводится понятие инверсии, которое означает ситуацию, когда имеет место нарушение порядка расположения элементов в заданном массиве. Например, если массив должен быть упорядочен по возрастанию, а два каких-либо соседних элемента этому свойству не удовлетворяют, то есть имеет место отношение Мi >М i+1. Тогда говорят, что имеет место инверсия элементов с номерамиiиi+1.

Суть метода пузырька состоит в том, что в заданном массиве по очереди сравниваются соседние элементы между собой и в случае появления инверсии ее устраняют – у таких элементов изменяют значения, М i +1получает значениеМ i, аМi +1. – значениеМ i. Это процедуру (проверку массива) повторяют несколько раз, до тех пор, пока все инверсии не будут устранены. Отсутствие инверсий означает упорядоченность массива.

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

Сортировка

1

Ввод N, M

да F : = 1

F : = 0 нет

i := 1,2, …, N-1 Вывод M

нет

M i +1 < M i

да Конец

C := M i +1

M i +1:= M i

M i := C

F:=1

1

Рис.4. Блок-схема алгоритма сортировки

В приведенной схеме используются две вспомогательные переменные – Fи C. Перед началом цикла переменнойFприсваивается значение 0. Это признак упорядоченности массива. Если изначально массивMуже упорядочен, то в процессе цикла перебора его элементов условиеМi >М i+1 ни разу не будет выполнено и значениеFостанется равным 0. Это признак того, что массив уже упорядочен. Если же в процессе перебора хотя бы одна инверсия встретится, значениеFизменится на 1 и в этом случае процесс нужно повторить.

Переменная Cнужна для осуществления обмена значениями между элементамиМi иМ i+1 в случае, если имеет место инверсия.