Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций СиАОД.docx
Скачиваний:
15
Добавлен:
01.03.2025
Размер:
4.62 Mб
Скачать
    1. Пример постановки задачи

Ввести три числа и вывести числа в порядке.

    1. Пример постановки задачи в стандартной форме

НАЗВАНИЕ

Сортировка трех целых чисел

ОПИСАНИЕ

Ввод и вывод трех чисел, отсортированных от меньшего к большему.

ВВОД

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

ВЫВОД

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

ОШИБКИ

  1. Если введено менее трех чисел, программа ждет дополнительного ввода.

  2. Строки ввода, кроме первых трех, игнорируются.

  3. Если какая-либо из первых трех строк содержит более одного целого числа, то программа завершает работу и выдает сообщение «ОШИБКА ВВОДА – допускается только одно целое число на строке»

ПРИМЕР

Ввод

-3

2

+17

Вывод

-3 2 +17

  1. Алгоритмы и их сложность

Модель вычислений

  • Используется однопроцессорная машина с произвольным доступом (random-access machine,RAM), не предусматривающая параллельного выполнения операций;

  • n – размер входных данных задачи;

  • Емкостная эффективность алгоритма – объем оперативной памяти, затрачиваемой алгоритмом, как функция размера задачи.

  • Временная эффективность алгоритма- время, затрачиваемое алгоритмом, как функция размера задачи.

  • Т (n) = 3 *n2+2*n

Асимптотическая временная эффективность

Поведение временной сложности алгоритма в пределе, при увеличении размера задачи, называется асимптотической временной эффективностью.

Используются обозначения:

Θ – обозначение;

Ο– обозначение;

Ω– обозначение.

Θ – обозначение

Ο– обозначение

Ω– обозначение

Максимальный размер задачи

Алгоритм

сложность

Максимальный размер задачи

(единица времени 1 миллисекунда)

1 сек

1 мин

1 час

А1

n

1000

60000

3.6*106

А2

n*log (n)

140

4893

2.0*105

А3

n 2

31

244

1897

А4

n 3

10

399

153

А5

2 n

9

15

21

Влияние ускорения компьютеров в 10 раз

Алгоритм

сложность

Максимальный размер задачи

До ускорения

После ускорения

А1

n

S1

10*S1

А2

n*log (n)

S2

≈10*S1

А3

n 2

S3

3.16*S3

А4

n 3

S4

2.15*S4

А5

2 n

S5

S5+3.3

Правило сумм

  • Пусть T1(n) и T2(n) – время выполнения двух программных фрагментов P1 и P2, T1(n) имеет степень роста O(f(n)),

  • а T2(n)O(g(n)).

  • Тогда время последовательного выполнения фрагментов P1 и P2 имеет степень роста O(max(f(n),g(n)))

Правило произведений

  • Пусть T1(n) имеет степень роста O(f(n)),

  • а T2(n)O(g(n)).

  • Тогда произведение T1(n) * T2(n) имеет степень роста O( f(n)*g(n))

Правила анализа программ

  1. Время выполнения операторов присваивания, чтения и записи обычно имеет порядок О(1)

  2. Время выполнения последовательности операторов определяется с помощью правила сумм

  3. Время выполнения условных операторов состоит из времени выполнения условно исполняемых операторов и времени вычисления логического выражения.

Время вычисления логического выражения обычно имеет порядок О(1)

4. Время выполнения цикла является суммой времени всех исполняемых итераций цикла, в свою очередь состоящих из времени выполнения тела цикла и времени вычисления условия прекращения цикла (обычно последнее имеет порядок О(1). Если в программе несколько циклов, время выполнения каждого должно определяться отдельно.