Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лк8.Формальное определение алгоритма.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
44.32 Кб
Скачать

C. Алгоритм вставки карточки в (упорядоченную) картотеку

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

Упражнения.

  1. Предложите способы для выполнения действия «раскрыть картотеку в произвольном месте».

  2. Вместо упорядоченной картотеки возьмите последовательность упорядоченных чисел, например, 11, 12, 13, 17, 17, 17, 19, 23, 25, 29, 30, 31, 31. Используя описанный алгоритм, вставьте в последовательность число 22, число 1, число 100, число 17.

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

D. Алгоритм сортировки (несортированной) картотеки

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

Этот пример демонстрирует иерархическую структуру: алгоритм сортировки основан на алгоритме слияния.

Упражнения.

  1. Выполнить алгоритм слияния для двух непустых последовательностей уже отсортированных целых чисел. Например, для последовательности 2, 3, 5, 7, 11, 13, 17, 19 и 11, 13, 17, 19, 23, 29, 31.

  2. Дана последовательность 18,6,12,42,94,55,44,67. Отсортируйте ее указанным методом.

E. Алгоритм вычисления значения дроби (a + b)/(a — Ь)

Сначала вычисляем (используя алгоритм сложения и вычитания ) значения выражения а + Ъ и а — b (все равно, последовательно или одновременно, поскольку ситуация здесь совместная), а потом образуем частное от деления полученных результатов (используя алгоритм деления).

Здесь обнаруживается как иерархическое строение, так и совместность.

F. Алгоритм вычисления числа е (т. Е. Вычисления последовательности дробей — приближения для е)

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

Начиная с последовательно вычислять

и образовать последовательность рациональных чисел .

Здесь речь идёт о незавершающемся алгоритме для вычисления вычислимого вещественного числа, опирающемся на алгоритм из пункта Е.

Упражнения.

  1. Вычислите третье приближение к числу e, то есть величину .

  2. Обдумайте правило останова для вычисления приближения к числу e с заданной точностью.