用C语言实现一个字符串的反序(如:“123”转换成“321”),要求时间复杂度O(1)

如题所述


#include<stdio.h>

void main()
{
    char str[100];
    int  i = 0;
    printf("Input  a string: ");    scanf("%s", str);

    printf("reversed string: ");

    while(str[i]) i++;
    while(i)  printf("%c", str[--i]);

    printf("\n");
}追问

这个的时间复杂度是O(n)吧?

追答

加入一些冗余语句,把 100 个数组元素,全都遍历一遍。
那么,输入多少个字符,就没有什么关系了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-09
两个程序均已通过。一个倒过来打印,另一个翻转后打印。
第一个程序:
#include <stdio.h>
#include <string.h>
void main()
{
char str[100];
int n, i;
printf("Input a string:");
scanf("%s", str);
n = strlen(str);
printf("The reversed string:");
for (i = n - 1; i >= 0; i--)
printf("%c", str[i]);
printf("\n");
}
第二个程序:
#include <stdio.h>
#include <string.h>
void main()
{
char str[100], ch;
int i, j;
printf("Input a string:");
gets(str);
i = 0;
j = strlen(str) - 1;
while (i < j)
{
ch = str[i];
str[i] = str[j];
str[j] = ch;
i++;
j--;
}
printf("The reversed string:");
puts(str);
}追问

下面的时间复杂度不是O(n)吗?

两个的时间复杂度不是O(n)吗?

用C语言实现一个字符串的反序(如:“123”转换成“321”),要求时间复杂...
include<stdio.h>void main(){ char str[100]; int i = 0; printf("Input a string: "); scanf("%s", str); printf("reversed string: "); while(str[i]) i++; while(i) printf("%c", str[--i]); printf("\\n");} ...

C语言中空间复杂度O(1)是什么意思啊!
O(1)是最低的时空复杂度,也就是耗时\/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时\/耗空间都不变。 哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标(不考虑冲突的话)。O后面的括号中有一个函数,指明某个算法的耗时\/耗空间与数据增长量之间的关系。

C语言描述的数据结构中时间渐进复杂度(O())的加法计算
时间复杂度描述的是执行算法所需的时间与输入数据规模之间的关系。它关注的是算法执行时间的增长速率,与问题规模的增大呈正比。时间复杂度的表示通常使用大O符号(O)。大O符号用于描述算法的时间复杂度,表示算法执行时间的增长上限。只关注最高次项,忽略常数因子和低次项。例如:n^2, 2n, n, n^2...

用C语言描述下列算法,并给出算法的时间复杂度。
所以算法复杂度是o(i(0)+i(1)...+i(n-1))

计算以下程序的运行次数和时间复杂度,主要说一下详细过程,我是C语言数 ...
运行次数:9次 时间复杂度:O(1)因为这个程序循环次数只是有限次,其他赋值以及输出操作时间复杂度只按1算,加起来还是等于一个常数,故时间复杂度为O(1);如果将s<10改为 s<n,那么时间复杂度将会是O(n)

...找出这个数字(用C语言解决)。要求时间复杂度尽量小。
但最好时间复杂度也得O(NlogN)所以用一种简单的办法来解决 定义两个变量,从第一个数开始找,并记录第一个数为result为需要找的数,它出现的次数初始化times=1,以后只要找到和result相等的数rimes++,否则times--,当times等于0的时候,改变result等于当前指向的数,继续找 ...

如何用c语言计算一个数的循环次数?
🔄循环次数的计算方法外层循环范围为i从1到n - 1,内层循环范围为j 从1 到i- 1。这样可以计算出循环执行的次数为:(n-2)(n-1)\/2。⏰时间复杂度当n趋于无穷大时,这个次数的无穷大阶次等于n的平方,也就是说,时间复杂度问为O(n^2)。

用c语言求一个n阶方阵的所有元素之和,并给出算法的时间复杂度
int a[N][N] = {1,2,3,4,5,6,8,7,9};int iterx = 0, itery = 0;int sum = 0;for(iterx = 0; iterx < N; iterx++){ for(itery = 0; itery < N; itery++){ sum += a[iterx][itery];} } printf("the sum is %d\\n", sum);return 0;} 时间复杂度O(N...

1到100的阶乘 编出C语言程序后, 请问其时间复杂度怎么求?
1)return 1;elsereturn n * func(n - 1);}int main(){int tmp = func(100);printf("%d\\n", tmp);return 0;}时间复杂度是由语句频度分析得来. 递归算法中重复执行的语句主要是调用. 所以递归算法的时间复杂度分析主要是分析递归算法中递归函数调用的次数。时间复杂度用大O表示法为O(n)...

怎样用C语言对一串整行数从大到小排序
算法思想简单描述: 在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的。如此反复循环,直到全部排好顺序。 直接插入排序是稳定的。算法时间复杂度O(n2)--[n的平方]===*\/void insert_sort(int *x, int n){ int ...

相似回答