При малых размерах входных данных невозможно заметить разницу во времени выполнения между эффективным и неэффективным алгоритмом. И только тогда, когда n становится велико, вопросы, связанные с разной эффективностью алгоритмов, выходят на первый план и становятся понятными.
n | log2n | nlog2n | n2 | n3 | 2n | n! |
---|---|---|---|---|---|---|
10 | 3.3 | 33 | 102 | 103 | 103 | 3.6⋅106 |
102 | 6.6 | 660 | 104 | 106 | 1.3⋅1030 | 9.3⋅10157 |
103 | 10 | 104 | 106 | 109 | 10301 | 4⋅102567 |
104 | 13 | 1.3⋅105 | 108 | 1012 | 2⋅103010 | много |
Самый малый порядок роста имеет
логарифмическая функция. Причем его значение настолько мало, что программы,
реализующие алгоритмы с логарифмическим количеством основных операций,
будут выполняться практически мгновенно для всех диапазонов входных данных
реального размера.
Хотя рост зависит от основания логарифма, можно заметить, что основание логарифма
меняет только множитель:
logan=logablogbn.
Поэтому можно опускать основание логарифма и записывать просто: logn.
С другой стороны, с помощью алгоритмов, в которых количество выполняемых операций растет по экспоненциальному закону, можно решить лишь задачи очень малых размеров.