Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Time complexity 这种递归算法的复杂度是多少_Time Complexity_Code Complexity - Fatal编程技术网

Time complexity 这种递归算法的复杂度是多少

Time complexity 这种递归算法的复杂度是多少,time-complexity,code-complexity,Time Complexity,Code Complexity,如何计算这样一个稍微复杂的递归算法的复杂度 在这种情况下,(0,n)的复杂性是什么 void某物(intb,inte){ 如果(b>=e)返回; int a=0; for(int i=b;i

如何计算这样一个稍微复杂的递归算法的复杂度 在这种情况下,(0,n)的复杂性是什么

void某物(intb,inte){
如果(b>=e)返回;
int a=0;
for(int i=b;i

我试着分析这个算法,认为它的复杂度是n*ln(n),但仍然无法得到正式的证明。

最初,循环将运行
(e-b)
次,它将调用自己2次,但将循环大小减少了一半

所以,
((e-b)/2)
将运行2次迭代;一次是通过
(b,(b+e)/2)
,另一次是通过
((b+e)/2+1,e)

像wise一样,两次迭代都将再次调用自身2次,但将迭代长度减少一半

所以“((e-b)/4)将运行4次,以此类推

递归树的高度为
log(b-e)
,(每个节点有2个子节点)

所以,
时间复杂度=(b-e)+2*((b-e)/2)+4*((b-e)/4)+……(log(b-e)次)

此表达式的计算结果为
(b-e)*log(b-e)


因此,时间复杂度=O(nlogn)

如何?除非b=e,否则我可以看到。哦,等等,别客气。有人声称会有一个无休止的循环,但我只能看到,如果b=e的可能性
void something(int b, int e) {
     if (b >= e) return;
     int a = 0;
     for(int i=b; i < e; i++)
     a++;
     int k = (b+e)/2;
     something(b, k);
     something(k+1, e);
     }