二分查找、递归实现的斐波那契数列的时间/空间复杂度

匿名 (未验证) 提交于 2019-12-03 00:26:01

一、二分查找法的时间复杂度

int Er_Feng_Find(int arr[],int sz, int data)

{

int left = 0;

int right = sz - 1;

int mid = 0;

while (left <= right)

2;

if (data < arr[mid])

1;

if (data > arr[mid])

1;

if (data == arr[mid])

return mid;//找到了返回下表

return -1;//找不到返回-1

}

int main()

{

int arr[10] = { 1,5,7,13,16,18,19,21,25,27 };

int data = 18;

int sz = sizeof(arr) / sizeof(arr[0]);

int pos=Er_Feng_Find(arr,sz,data);

if (pos != -1)

printf("找到了,下表为:%d\n", pos);

"pause");

return0;

}




因为辅助空间是常数,所以空间复杂度为O(1)

二、递归实现的斐波那契数列的时间复杂度和空间复杂度

代码如下:

fibo(int n)

if(n<=2)

return1

else

return fibo(n-1)+fibo(n-2

}

假如求6的斐波那契数,过程如下:


fib(6)的的=最深高度是5,所以空间复杂度是O(N-1),即O(N)。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!