- •Часть 1
- •Содержание
- •Введение
- •1. Структура и принцип действия компьютера
- •2. Алгоритм и программа
- •2.1. Понятия об алгоритме и программе
- •2.2. Типовые алгоритмы
- •2.2.1. Вычисление суммы чисел произвольного ряда
- •Вычисление произведения чисел произвольного ряда
- •2.2.3. Определение наибольшего (наименьшего) числа заданного ряда чисел
- •2.2.4 Определение наибольшего (наименьшего) значения вычисляемой функции
- •2.2.5. Вычисление функции с одновременно изменяющимися несколькими аргументами
- •2.2.6. Итерационные циклы
- •2.2.7. Сортировка ряда чисел
- •Метод смежных пар
- •Метод поиска наименьшего (наибольшего)
- •2.2.8. Алгоритмы решения задач с использованием матриц
- •Общие методические указания по выполнению лабораторных работ
- •4.1. Порядок проведения лабораторных работ
- •4.2. Требования к оформлению отчета по выполненной лабораторной работе
- •5. Цели и содержание лабораторных работ
- •5.1 Лабораторная работа № 1 Вычисление выражений с использованием библиотечных
- •5.1.1. Задание
- •5.1.2. Общие сведения и рекомендации по выполнению работы
- •5.1.3. Контрольные вопросы и задания
- •5.2. Лабораторная работа № 2 Программирование разветвляющихся вычислительных процессов.
- •5.2.1. Задание
- •5.2.2. Общие сведения и рекомендации по выполнению работы
- •5.2.3. Контрольные вопросы и задания.
- •5.3. Лабораторная работа № 3 Программирование разветвляющихся вычислительных процессов с использованием оператора множественного выбора.
- •5.3.1. Задание
- •5.3.2. Общие сведения и рекомендации по выполнению работы
- •5.3.3. Контрольные вопросы и задания
- •5.4. Лабораторная работа № 4 Программирование с использованием простых циклов.
- •5.4.1. Задание
- •5.4.2. Общие сведения и рекомендации по программированию
- •5.4.3. Контрольные вопросы и задания
- •5.5. Лабораторная работа № 5 Программирование с использованием итерационных циклов.
- •5.5.1. Задание
- •Проверочный результат
- •Относительная погрешность, %
- •5.5.2. Общие сведения и рекомендации по программированию
- •5.5.3. Контрольные вопросы и задания
- •5.6. Лабораторная работа № 6 Расчет функций с несколькими одновременно изменяющимися аргументами.
- •5.6.1. Задание
- •5.6.2. Общие сведения и рекомендации по выполнению работы
- •5.6.3. Контрольные вопросы и задания
- •5.7. Лабораторная работа № 7 Программирование с использованием массивов и внешних файлов.
- •5.7.1. Задание
- •5.7.2. Общие сведения и рекомендации по программированию
- •5.7.3. Контрольные вопросы и задания
- •5.8 Лабораторная работа № 8 Программирование с использованием функций.
- •5.8.1. Задание
- •5.8.2. Общие сведения и рекомендации по выполнению работы
- •5.8.3. Контрольные вопросы и задания
- •5.9. Лабораторная работа № 9 Программирование с использованием операций над комплексными числами.
- •5.9.1. Задание
- •5.9.2. Общие сведения и рекомендации по выполнению работы
- •5.9.3. Контрольные вопросы и задания
- •Приложения Приложение 1.
- •Приложение 2.
- •Список литературы
2.2.7. Сортировка ряда чисел
Сортировка – это упорядочение (размещение) чисел по возрастанию или по убыванию их значений.
Существует несколько различных способов решения этой задачи, однако чаще всего используются:
– метод смежных пар (метод "пузырька"),
– метод поиска наименьшего (наибольшего) числа.
Метод смежных пар
Алгоритм, реализующий метод смежных пар, основан на сравнении двух соседних чисел с последующей их перестановкой в случае, если они расположены не в нужной очередности.
На рис.2.6 приведен алгоритм сортировки
заданного ряда чисел
по возрастанию. Для регулярного сравнения
двух соседних чисел предусматривается
циклический процесс. В заголовке цикла,
в качестве параметра цикла, используется
адрес числа
с его областью изменения от
до k =
.
Здесь следует обратить внимание на то,
что правая граница области изменения
параметра цикла i
равна не n, а n-1.
Это объясняется тем, что при сравнении
двух соседних чисел адрес первого числа
определяется значением параметра цикла
i, а адрес второго
числа вычисляется добавлением единицы
(i+1). Если бы параметр
цикла имел бы свое последнее значение
n, а не n-1,
то при i = n
адрес второго числа определялся бы как
i= n+1,
а это уже выходит за пределы рассматриваемого
ряда, и числа с таким адресом нет. Поэтому,
чтобы исключить такую ситуацию, последнее
значение параметра цикла принимается
на единицу меньше.
В теле
цикла происходит сравнение значений
двух соседних чисел
и
,
и в случае их неправильного расположения
осуществляется их взаимная перестановка
с помощью промежуточной переменной
.
Переменная
используется с целью исключения потери
значения одного из чисел при перестановке.
Факт перестановки фиксируется с помощью
переменной
,
которая играет роль индикатора, путем
установки ей значения равной единице.
Если же числа расположены в требуемой
очередности, то их перестановка не
производится. После завершения каждого
цикла, на последнее место перемещается
самое большое число из чисел, рассматриваемых
в этом цикле. Кроме этого, проверяется
состояние индикатора
.
Если его значение равно единице, то это
означает, что хотя бы одна перестановка
в завершившемся цикле была, и, следовательно,
необходимо совершить еще один цикл для
сравнения соседних чисел, но без
последнего числа, которое и так уже
расположено на нужном месте. Исключение
последнего числа из рассмотрения, после
завершения очередного цикла, осуществляется
операцией k = k
–1. Это позволяет экономить машинное
время, так как нет никакого смысла
проверять размещение уже расположенного
на нужном месте числа.
После этого все начинается сначала. Индикатор устанавливается в стартовое состояние со значением нуль, и в цикле производится поочередное сравнение двух соседних чисел.
+
–
Рис. 2.6 Блок – схема сортировки чисел по возрастанию
методом смежных пар
Такие циклы будут повторяться до тех пор, пока не обнаружится, что после завершения очередного цикла индикатор не поменял своего начального значения 0 на 1. И это будет означать, что в процессе циклической операции не было ни одной перестановки, а, следовательно, числа расположились в требуемой последовательности, то есть ряд отсортирован. Таким образом, алгоритм позволяет повторять циклические операции столько раз, сколько будет необходимо для завершения процесса сортировки.
Сортировка ряда чисел по убыванию выполняется аналогично. В этом случае необходимо в операции сравнения соседних чисел знак " > " заменить знаком " < ".
Метод смежных пар экономичен с точки зрения расхода машинного времени. Если исходный ряд уже сортирован в требуемой последовательности, то достаточно выполнить только один проверочный цикл, чтобы убедиться, что индикатор не поменял своего начального значения 0.
