Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по проге / 6_Комбинирование операторов

.pdf
Скачиваний:
30
Добавлен:
14.03.2016
Размер:
387.56 Кб
Скачать

Задание

Определите алгоритмическую сложность следующей программы:

for (i = 0; i < N; i++)

{scanf("%d", &arr[i]); }

for (i = 0; i < N; i++)

{ printf("%d ", arr[i]); }

41

Линейная сложность

Два идущих подряд цикла дают нам: C1*N + C2*N операций, при этом N можно вынести за скобки: (С1+C2)*N, можно также обозначить C = C1 + C2, следовательно C*N

Если два цикла идут один за другим, то сложность программы остается линейной

42

Задание

Определите алгоритмическую сложность следующей программы:

for (i = 0; i < N; i++)

{

for (j = 0; j < N; j++)

{ printf("%d ", arr[i][j]); }

}

43

Квадратичная сложность

Внутренний цикл начинается N раз, и каждый раз он N раз выполняет печать элемента массива, поэтому общее число операций пропорционально квадрату N

Формы записи:

С*N2

O(N2)

44

Задание

Определите алгоритмическую сложность следующей программы:

for (i = 0; i < N; i++)

{

for (j = 0; j< K; j++)

{ printf("%d ", arr[i][j]); }

}

45

Произведение нескольких переменных

Внутренний цикл выполняется N раз, и каждый раз он K раз выполняет печать элемента массива, поэтому общее число операций пропорционально произведению N*K

Формы записи:

С*N*K

O(N*K)

46

Задание

Определите алгоритмическую сложность программы, угадывающей число методом дихотомии (деления пополам):

-она пробует среднее число из интервала [0, N];

-в зависимости от ответа пользователя (больше или меньше) выбирает следующий возможный интервал.

47

Логарифмическая сложность

В лучшем случае число будет угадано с первого раза

В худшем случае потребуется количество операций, пропорциональное двоичному логарифму N (например при N = 16 любое число можно отгадать за 4 попытки)

Формы записи:

C*ln N

O(ln N)

48

Декомпозиция

Декомпозицией называется процесс разбиения сложной задачи на простые подзадачи и решение их по-отдельности

Для того, чтобы программу можно было отладить, усовершенствовать или просто продолжать писать дальше, она должна быть контролируемой, т.е. понятной человеку в каждой детали

49

Декомпозиция

Главным источником трудности при написании программ является их сложность

Основным средством борьбы со сложностью и поддержания программы в контролируемом состояние является разбиение ее на небольшие части, каждая из которых проста и понятна

Эти небольшие части программы должны

соединяться между собой простым и понятным 50 образом