一道时间复杂度的题目
程序员文章站
2024-03-16 16:04:58
...
请问下面函数的时间复杂度是多少?
const int MAXN=1000;
int cnt=0;
void test(int t){
while(t<MAXN){
test(t+1);
//cnt++;
}
}
结论是死循环!!不要想当然认为是O(n^2)。 以 MAXN=10,t=9 为例进行测试即可发现是死循环。
#include<iostream>
using namespace std;
const int MAXN=1000;
int cnt=0;
void test(int t){
while(t<MAXN){
test(t+1);
cnt++;
}
}
int main(){
test(10);
cout<< cnt<<endl;
}
推荐阅读
-
一道时间复杂度的题目
-
leetcode上面有一道3Sum的算法题,如何降低时间复杂度
-
每天一道LeetCode-----找到给定数组的连续子数组,使这个子数组的和最大,要求复杂度为O(n)
-
Ifelse语句的时间复杂度
-
【算法】给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序
-
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。要求时间复杂度优于O(nlogn)
-
数据结构二分法-给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。
-
输入一个整型数组,输出该数组的主要元素,如果不存在主要元素,则输出-1,找出好的算法,需要考虑时间和控件复杂度;
-
【左神算法】给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。
-
时间复杂度O(logn),空间复杂度O(1)求一个数double x的n次幂