算法分析与函数增长速率详解
1. 算法分析基础
在算法分析中,并非所有算法的行为都会因输入内容的不同而有所差异。有些算法在处理大小为 n 的输入时,在所有情况下的表现都是一致的。例如下面这个求最大值的算法:
def max(array)
return nil if array.empty?
result = array[0]
1.upto(array.size-1).each do | index |
result = array[index] if result < array[index]
end
return result
end
这个求最大值的算法会检查数组中除第一个元素之外的每一个元素,因为最大值可能出现在任何位置。对于大小为 n 的输入(即数组的大小),它总是进行 n - 1 次比较(这是我们所统计的基本操作)。该算法的最坏情况、最好情况和平均情况的复杂度都是相同的。
我们来定义几种不同类型的复杂度:
- 计算复杂度 :指算法的时间(可能还有空间)需求。
- 每情况复杂度 C(n) :当算法在处理大小为 n 的所有输入时执行相同数量的基本操作,C(n) 就是该算法执行的基本操作数量,它是输入大小 n 的函数。对于上述求最大值的算法,C(n) = n - 1。
- 最坏情况复杂度 W(n) :算法在处理大小为 n 的任何输入时执行的最大基本操作数量。
- 最好情况复杂度 B
超级会员免费看
订阅专栏 解锁全文
1466

被折叠的 条评论
为什么被折叠?



