请分析下面算法的时间复杂度。希望可以给一个详细分析计算过程,谢谢。

算法1:
#include<stdio.h>
#include<string.h>
#define MAX 100
int func(char s[])
{
int flag = 1;
int i, j, slen = strlen(s);
for (i = 0, j = slen - 1; i < j; i++, j--)
if (s[i] != s[j])
{
flag = 0;
break;
}
return(flag);
}
int main()
{
char s[MAX];
printf("输入一串字符:");
gets_s(s);
if (func(s) == 1)
printf("%s字符串是回文\n", s);
else
printf("%s字符串是不回文\n", s);
}
算法2:
#include<stdio.h>
int func(int num)
{
int s = 0;
do
{
s += num % 10;
num /= 10;
} while (num);
return(s);
}
int main()
{
int n;
printf("\n");
printf("输入一个整数:");
scanf_s("%d", &n);
printf("各位数字之和:%d\n", func(n));
printf("\n");
return(0);
}
/*#include<math.h>
int prime(int x)
{
int i;
for (i = 2; i <=
(int)sqrt(float(x)); i++)
if (x%i == 0)return 0;
return 1;
}
求大佬指导,谢谢!

算法1是最坏情况执行n/2次,也就是O(n);
算法2是执行次数是[lgn]+1,也就是O(lgn)
算法3是最坏情况执行[√n]-1次,这就是O(√n)
其中,lg是以10为底的对数。[ ]是向下取整。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答