Временная сложность первой функции составляет O (log n), потому что именно столько бит требуется для представления n в двоичном формате, а bin(n)
и .count('1')
требуют линейного времени в количестве бит.
Временная сложность второй функции равна O (log 2 n), потому что l oop повторяет O (log n) раз и сдвиг битов n >> 1
внутри l oop занимает O (журнал N) время. То есть число итераций является линейным по количеству битов, а сдвиг занимает линейное время по числу битов.
Таким образом, временная сложность первой функции ниже.