算法是解决某一特定类型问题的有限运算序列。
算法的特征:有穷性、确定性、可行性、输入和输出。
算法的评价:正确性、可读性、稳定性和算法效率。其中算法效率通过算法时间复杂度和空间复杂度来描述。
时间复杂度:指算法中包含简单操作的次数。一般以数量级形式体现。
空间复杂度:指算法运行过程中临时占用的存储空间的大小。一般以数量级形式体现。
1时间复杂度的计算
/*示例1:分析一下程序段的时间复杂度*/
for (i = 0; i < n; i++) /*语句1*/
{
y = y + 1; /*语句2*/
for (j = 0; j <= 2*n; j++) /*语句3*/
x++; /*语句4*/
}
分析:
语句频度是指该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。
语句1的频度:n+1
语句2的频度:n
语句3的频度:n*(2n+2)
语句4的频度:n*(2n+1)
于是,该程序段的时间复杂度T(n)=(n+1)+n+n*(2n+2)+n*(2n+1) = 4n*n+5n+1=O(n*n)
/*示例2:分析一下程序段的时间复杂度*/
i = 1;
while (i <= n)
i = i * 2;
分析:
2常用时间复杂度关系
3常见排序算法的时间复杂度