浅谈时间复杂度及空间复杂度的计算。
2017-12-10 17:59
387 查看
算法的时间复杂度和空间复杂度统称为算法的复杂度。其作用: 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度)。
为什么要有时间复杂度和空间复杂度?
试想如果我们要知道一个程序算法的优劣需要知道的事这个程序的运行速度和空间耗费情况,而程序的运行速度在不同的计算机上又是有区别的(因处理器的差别导致),此时,我们就需要一个统一的计量单位来计算一个程序的效率,即时间复杂度
时间复杂度和空间复杂度的表示方法都是大O渐进表示法(即O(f(n)))
f(n)是描述程序总的循环次数(时间复杂度)或者函数中创建对象的个数(空间复杂度)的函数
举个栗子
为什么要有时间复杂度和空间复杂度?
试想如果我们要知道一个程序算法的优劣需要知道的事这个程序的运行速度和空间耗费情况,而程序的运行速度在不同的计算机上又是有区别的(因处理器的差别导致),此时,我们就需要一个统一的计量单位来计算一个程序的效率,即时间复杂度
时间复杂度和空间复杂度的表示方法都是大O渐进表示法(即O(f(n)))
f(n)是描述程序总的循环次数(时间复杂度)或者函数中创建对象的个数(空间复杂度)的函数
举个栗子
int Fib(int n) { int a = 0; int b = 1; int c = 0; int i = 0; if (n < 2) { return n; } for (i = 2; i <= k; i++) { c = a + b; a = b; b = c; } return c; }
时间复杂度O(f(n))=O(n); 空间复杂度O(f(n))=O(1);
int Fib(int n) { if (n < 2) { return n; } else { return Fib(n - 1) + Fib(n - 2); } return; }
时间复杂度O(f(n))=O(2^n); 空间复杂度O(f(n))=O(n);
int Fib(int first, int second, int n) { if (n==1||n == 2) { return 1; } if (n == 3) { return first + second; } return Fib(second, first + second,n-1); }
时间复杂度O(f(n))=O(n); 空间复杂度O(f(n))=O(n);
int Find(int arr[],int left, int right, int n) { while (left <= right) { int mid = (left >> 1) + (right >> 1); if (n == arr[mid]) { return mid; 9da2 } else if (n < arr[mid]) { return Find (&arr[0], left, mid - 1,n); } else if (n>arr[mid]) { return Find(&arr[0], mid+1 , right,n); } } return -1; }
时间复杂度O(f(n))=O(logn)(复杂度计算中log2(n)中底数2省略); 空间复杂度O(f(n))=O(logn);
int Find(int arr[],int size,int n) { int left = 0; int right = size - 1; while (left <= right) { int mid = (left>>1)+(right>>1); if (n == arr[mid]) { return mid; } else if (n < arr[mid]) { right = mid - 1; } else if (n>arr[mid]) { left = mid + 1; } } return -1; }
时间复杂度O(f(n))=O(logn)(复杂度计算中log2(n)中底数2省略); 空间复杂度O(f(n))=O(1);
相关文章推荐
- 浅谈时间复杂度与空间复杂度
- 计算时间和空间复杂度
- 计算时间和空间复杂度
- 计算算法的时间和空间复杂度
- 0-时间复杂度&空间复杂度的计算
- 计算时间和空间复杂度
- 关于计算时间复杂度和空间复杂度
- 常用排序算法的时间和空间复杂度及算法时间复杂度的简单计算
- 计算算法的时间复杂度和空间复杂度
- 计算时间复杂度和空间复杂度
- 算法的时间复杂度和空间复杂度计算
- 视频序列的空间复杂度和时间复杂度的不用模型计算
- 浅谈时间复杂度和空间复杂度
- 如何计算一个算法的时间复杂度和空间复杂度
- 浅谈时间复杂度以及空间复杂度
- 算法的复杂度包括时间复杂度和空间复杂度分别如何计算?
- 计算算法的时间和空间复杂度
- 计算时间复杂度&空间复杂度
- 【C/C++】空间复杂度和时间复杂度的计算
- 时间复杂度与空间复杂度计算