C语言中的
时间复杂度和
空间复杂度是衡量算法效率的重要指标。
时间复杂度是指算法执行所需的时间资源,通常用大O符号表示。
空间复杂度是指算法执行所需的额外空间,通常也用大O符号表示。
在C语言中,常见的
时间复杂度有:
1. 常数阶O(1):无论数据规模大小,算法执行时间都相同,例如简单的赋值操作。
2. 对数阶O(logn):算法执行时间随数据规模增大而增大,但增长速度缓慢,例如二分查找。
3. 线性阶O(n):算法执行时间与数据规模成正比,例如遍历数组。
4. 线性对数阶O(nlogn):算法执行时间随数据规模增大而增大,但增长速度比线性阶快,例如
快速排序。
5. 平方阶O(n^2):算法执行时间随数据规模增大而增大,增长速度较快,例如
冒泡排序。
6. 立方阶O(n^3):算法执行时间随数据规模增大而增大,增长速度更快,例如矩阵乘法。
7. 指数阶O(2^n):算法执行时间随数据规模增大而急剧增大,例如求解汉诺塔问题。
在C语言中,常见的
空间复杂度有:
. 常数阶O(1):算法执行所需的额外空间不随数据规模增大而增大,例如简单的变量定义。
2. 线性阶O(n):算法执行所需的额外空间随数据规模增大而增大,例如数组定义。