Так что я читаю код с этого сайта: http://www.geeksforgeeks.org/write-a-c-program-to-find-the-parity-of-an-unsigned-integer/Почему большое время автономной работы 1-го журнала проверки четности (n)?
И это показывает, как определить, имеет ли число четную или нечетную четность. Однако я не понимаю, почему эффективность выполнения - log (n). Вот код для справки:.
# include <stdio.h>
# define bool int
/* Function to get parity of number n. It returns 1
if n has odd parity, and returns 0 if n has even
parity */
bool getParity(unsigned int n)
{
bool parity = 0;
while (n)
{
parity = !parity;
n = n & (n - 1);
}
return parity;
}
Ха-ха, да, время выполнения * довольно 0 (k) ... –
Итак, k - это сумма из числа или бит множества бит? Я принимаю множество бит? – Kamal
Технически это O (s), где s - количество установленных бит. Однако стоит отметить, что алгоритм, если он распространен на сколь угодно большие целые числа, фактически будет O (s log n), поскольку побитовые операции - это O (log n) на сколь угодно больших целых числах. – nneonneo