复杂度分析

算法(Algorithm)

是指用来操作数据、解决程序问题的一组方法。
不同的算法能得出相同的结果,但是不同的算法所需要消耗的时间和空间是不一样的,所以我们对于算法优劣的衡量主要是从算法所占用的「时间」和「空间」两个维度去考量。

时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。

对于时间维度:
「 大O符号表示法 」,即 T(n) = O(f(n))

  • 常数阶O(1) --------(普通操作)
int a=10;
int b=10;
a=a+b;
  • 线性阶O(n)--------(一层for循环)
int sum;
 for(int i=0;i<n;i++){
 		sum += i;
 }
  • 平方阶O(n²)--------(两层for循环)
//输入int a[n][n]
int sum;
for(int i=0;i<n;i++){
	for(int j=0;j<n;j++){
		sum += a[i][j];
	}
}
  • 对数阶O(logn)--------(成 2 倍数的缩减搜索范围)----(二分查找)
int binarySearch( int arr[], int n , int target){
   int l = 0, r = n - 1;
   while ( l <= r) {
     int mid = l + (r - l) / 2;
     if (arr[mid] == target) return mid;
     if (arr[mid] > target ) r = mid - 1;
     else l = mid + 1;
   }
  return -1;
}

对于空间复杂度
一个程序的空间复杂度是指运行完一个程序所需内存的大小。
一个算法所需的存储空间用f(n)表示。S(n)=O(f(n)),其中n为问题的规模,S(n)表示空间复杂度。

总结

对于一个算法而言,时间与空间是可以相互转换的。比如我们常说的用空间换时间–哈希表
建立一个更大的空间去节约时间。所以我们在使用算法的时候往往需要综合考虑时间与空间的复杂度,选择更优的算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值