<1>时间复杂度指程序的运行次数与运行时间无关
算时间复杂度时常常算的是最坏运行次数
如有常数项,可忽略不计 eg:某程序最坏运行次数为2n 时间复杂度为O(n) 将2省略
递归算法时间复杂度=递归次数*每次执行操作次数
<2>空间复杂度指算法执行创建变量的个数 包括临时变量
如有常数项,可忽略不计 eg:某程序算法执行时创建的变量为2n个 空间复杂度为O(n) 将2省略
递归算法空间复杂度=深度(调用函数的次数)*每次开辟的空间
1、二分查找算法的递归
int search_recursiong(int *arr, int lift, int right, int num)
{
assert(arr);
if (lift <= right){
int mid = (lift + right) / 2;
if (arr[mid] == num){
printf("The %d number\n", mid + 1);
return 0;
}
else if (arr[mid] < num){
return searc