Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорный конспект по программированию (наиболее....doc
Скачиваний:
28
Добавлен:
27.10.2018
Размер:
2.51 Mб
Скачать
    1. Примеры классических алгоритмов

      1. Переменные-счетчики и аккумуляторы

Типичное применение счетчиков и аккумуляторов – обновление значения в итоговой переменной.

Рассмотрим оператор присваивания number := number +1. Символ равенства действует, как стрелка, указывающая влево: «Возьми то, что стоит справа от знака равенства, вычисли, а затем положи в переменную, стоящую слева». После выполнения сложения значение суммы будет помещено в переменную number, заменив первоначальное значение. Конечный результат оказывается на 1 больше начального значения (рис. 1.22).

Рис. 1.22 схема работы переменной-счетчика

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

Аккумулятор подобен счетчику в том, что имя переменной находится с двух сторон оператора присваивания. В отличие от переменных-счетчиков аккумуляторы обычно добавляют значение, отличающееся от 1 (рис. 1.23). Аккумуляторы используются для подсчета денежных сумм, данных о продажах и т. д. Для суммирования ряда значений продаж, введенных пользователем, должно использоваться выражение, подобное следующему:

Общая_Сумма_Продаж := Общая_Сумма_Продаж + Сумма_Данной_Сделки.

Рис. 1.23 схема работы переменной-аккумулятора

      1. Алгоритм перестановки значений двух переменных

Основой любого алгоритма сортировки является перестановка данных (обмен данными). При сортировке необходимо переупорядочить данные, осуществляя замену меньших значений большими или наоборот. На рис. 1.24 показано, что перестановка значений означает замену содержания одних переменных содержанием других переменных и наоборот.

Для перестановки значений обязательно требуется третья переменная, которую называют временной переменной (temporary variable), поскольку после перестановки значений она больше не нужна.

temp = var1;

var1 = var2 ;

var2 = temp.

Рис. 1.24 Перестановка значений двух переменных с использованием временной переменной

      1. Простейший алгоритм сортировки

Сортировку значений можно осуществлять различными способами.

Пример. Требуется отсортировать следующий ряд чисел: 10, 54, 34, 46, 23

Список, отсортированный в порядке возрастания (ascending order), от наименьшего к наибольшему: 10, 23, 34, 46, 54.

Список, отсортированный в порядке убывания (descending order), от наибольшего к наименьшему: 54, 46, 34, 23, 10.

Наиболее популярной является «пузырьковая» сортировка (сортировка «пузырьковым» методом). Она не очень эффективна, но в отличие от прочих алгоритмов сортировки понятна и легко переносится в программный код.

Типичный алгоритм «пузырьковой» сортировки осуществляет перемещение больших значений в конец списка, т.е. список сортируется от меньшего значения к большему. Как правило, сортируемые данные хранятся в массиве. Используя индексы массива, можно переупорядочить элементы массива, переставляя значения, пока массив не будет упорядочен в требуемом порядке.

При сортировке «пузырьковым» методом элементы массива сравниваются и переставляются по два за один раз за несколько проходов. В каждом проходе осуществляется сравнение всех пар в списке. Если первое значение пары больше, чем второе, осуществляется их перестановка, чтобы большее значение «опустилось» на одну запись ниже.

Процесс сортировки представлен на рис. 1.25.

Рис. 1.25 Упорядочивание элементов массива по возрастанию

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

На рис. 1.26 представлен алгоритм двух вложенных циклов. Внешний цикл отмечен серым цветом фона. Внутренний цикл выполняется «быстрее» внешнего, т.к. его параметр-счетчик принимает все свои значения во время выполнения одного прохода внешнего цикла. Когда внешний цикл перейдёт ко второму выполнению, внутренний цикл будет выполняться с самого начала. Внешний цикл определяет, сколько раз будет повторяться выполнение внутреннего цикла.

Рис. 1.26 Алгоритм двух вложенных циклов