- 一.时间复杂度
-
时间复杂度即程序运行的时间效率,算法中的基本操作的执行次数的累加,为算法的时间复杂度(用O的渐进表示)。
-
大O的推导:①算出具体执行次数(按照最坏结果计算)②用常数1代替所有的加法常数③只保留最高项④最高阶项不是1的化为1.
-
列题:
void bubule_sorte(int* arr, int sz) { for (int j = 0; j < sz - 1; j++) { int flag = 1; for (int i = 0; i < sz - 1 - j; i++) { if (arr[i] > arr[i + 1]) { flag = 0; int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; } } if (flag == 1) { break; } } }
上述冒泡算法共运行(n-1)*n/2次,即是n*n/2-n/2次。用大O的渐进表示就是为O(N)
-
二.空间复杂度
-
空间复杂度即算法的空间效率,他是对临时占用存储空间大小的度量。变量个数的累加,为空间复杂度,也用大O的渐进表示。计算方法同时间复杂度
-
例题,同上述例题:共建立6个变量,O(1)为其空间复杂度的表示
-
三.各种大O复杂度的比较
时间复杂度和空间复杂度的计算
于 2024-08-21 11:07:56 首次发布