算法复杂度分析一般过程

讲道理学了这么多算法了,但真正的按步骤去分析算法的还真很少。

最简单的冒泡排序来展示一般步骤:


冒泡排序算法
算法描述(伪代码):
算法 bubblesort(A)
输入:n个数的数组A
输出:按照递增顺序排好序的数组A

1.for i <- 0 to n-1 do
2.  Flag<-1
3.  for i <- n-1 to i+1 do
4.          if A[j]1] then
5.          Flag<-0
6.      exchange A[j] and A[j-1]
7.  if Flag=0 then break

算法复杂性分析:
1.时间复杂度
在该算法中问题的规模由数组中的元素个数决定,但是外层循环的执行次数还受数组的状态影响,当最优状况下即数组是按从小到大顺序排列好的,则最优时间复杂度是Tmin(n)=O(n),平均时间复杂度Tavg(n)=O(n^2),最坏情况是Tmax=O(n^2)。
2.空间复杂度
输入和输出分配的空间不计入,该算法所分配的辅助空间只包含i,j,Flag,所以为常数阶即S(n)=O(1)。

你可能感兴趣的:(复杂度分析)