Существует более одного решения для нахождения числа цифр в данном номере.
Например:
Метод-1:
int findn(int num)
{
char snum[100];
sprintf(snum, "%d", num);
return strlen(snum);
}
Метод-2:
int findn(int num)
{
if (num == 0) return 1;
int n = 0;
while(num) {
num /= 10;
n++;
}
return n;
}
Метод-3:
int findn(int num)
{
/* math.h included */
return (int) log10(num) + 1;
}
Вопрос в том, какой метод наиболее эффективен?Я знаю, что метод-2 O(n)
, но как насчет метода-1 и метода-3?Как найти сложность библиотечных функций во время выполнения?