Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
С/С++
1 байт = 8 бит
Размер (в
Тип данных Охват
байтах)
Размер (в
Тип данных Охват
байтах)
unsigned long
8 0 to 18,446,744,073,709,551,615
long int
long double 12
wchar_t 2-4 1 wide character
Типы данных с плавающей точкой могут лишь увеличивать свою точность, но в виду
некоторых проблем некоторые числа из десятичной системы невозможно
представить в двоичной.
К примеру для оценки размера статичного массива единого типа в C++ необходимо
размер массива разделить на размер элемента (указатели исключение, так как они
весят 4 либо 8 байт в зависимости от машинного слова, а размер массива
недоступен). Для оценки объёма памяти алгоритма со статичными переменными
необходимо учесть размер всех переменных с учётом рекурсий и их глубины, если
таковые имеются.
1. Это функция.
2. Зависит от размера входных данных.
3. Возвращает максимум операций/памяти на всех входах такого размера. То есть
для худшего, самого затратного случая.
С++
1 для int i = 0
n+1 для i < n
2n для i++ (что эквивалентно i = i + 1, а это две операции: присваивание и
сложение)
2n для сount++
C(n) = 2 + 5n
Скорость алгоритма
Временная сложность алгоритма (в худшем случае) — это функция от
размера входных данных, равная максимальному количеству
элементарных операций, проделываемых алгоритмом для решения
экземпляра задачи указанного размера.
Скорость алгоритма может иметь лучший, средний и худший случай и скорость
принято обозначать через O().
Классификация
Сложность Значение при
Тип зависимости 10
O(f (n)) n = 2 = 1024
O(1) Постоянная 1
2
6
O(n )
Полиномиальная 10
3 (геометрическая) 9
O(n ) 10
n
O(2 ) Экспоненциальная 10
300
Циклы
Существуют два способа создания цикла: итеративный и рекурсивный.
fact = 1; n = 10
а рекурсией
Результатом обоих алгоритмов, при n = 10, будет число 3628800, что подтверждает
их сходство.
Метод Greedy
Greedy Algorithm - это алгоритмическая стратегия, используемая для того, чтобы
сделать наилучший необязательный выбор на очень маленькой стадии и в конечном
итоге вывести глобально оптимальное решение. Этот алгоритм выбирает лучшее
решение, которое возможно в данный момент, без учета каких-либо последствий.
Жадный метод говорит, что проблема должна решаться поэтапно, при этом каждый
вход рассматривается с учетом того, что этот вклад возможен. Поскольку этот
подход фокусируется только на немедленном результате без учета общей картины,
он считается жадным.
Визуализировать данный метод можно при помощи графа, имеющего пути решения
и метод предполагает перебор всех возможных путей по очереди и в случае
отсутствия дальнейшего пути вернуться на 1 ребро назад для аналогичной
рекурсивной проверки.