这一篇博客是我的第一篇博客,我就想着从今天开始,试着用博客记录下我的日常学习生活。
2021.1.11
今天学习了程序的时间复杂度,空间复杂度,并尝试着去计算一个程序的时间复杂度与空间复杂度;
一般情况下,时间复杂度可以直接计算,时间复杂度分为几种,例如冒泡排序的时间复杂度的计算:
for(int i=0;i<n;i++){
for(int j=0;j<n-i;j++){}}:
它的时间复杂度就是g(n)=(n-1)c+(n-2)c+(n-3)c+...+c;
可以用等差公式,那么g(n)=1/2(n-1+1)n,用O表示则为O(n^2),既冒泡排序的时间复杂度为O(n^2);
再举个例子;
for(int i=0;ii<n;i++);
这个循环的时间复杂度就位O(根号n);
空间复杂度:
我们直接举几个例子进行计算,开了一个大小为10^6的int型数组,那么对应数组的空间为多大?
int 是4个字节,8位==1个字节,1024字节==1KB,1024KB==1MB,1024MB==1GB.
该数组的大小为410^6/(10^3*10^3);大小即为4MB左右。
所以平时的程序的时间复杂度以及空间复杂度是可算的。