算法分析目的:分析算法得时空效率以便改进算法性能。
1.3.1算法时间复杂度分析
一个算法是由控制结构(顺序,分支和循环三种)和原操作(指固有数据类型的操作,如+ - / ++和–等)构成的。算法执行时间取决于两者都综合效果。
算法分析方式:
事后分析统计方法,编写算法对应程序,统计其执行时间。
编写程序不同,执行程度都环境不同,其他因素,所以不能用绝对执行时间进行比较。
事前估算分析办法:撇开上诉因素,认为算法得执行时间是问题规模n的函数。
分析算法得执行时间:
• 求出算法所有原操作的执行次数(也称为频度),它是问题规模n的函数,用T(n)表示。
• 算法执行时间大致=原操作所需的时间xT(n)。所以T(n)与算法执行时间成正比。为此用T(n)表示算法的执行时间。
• 比较不同算法的T(n)大小得出算法执行时间到好坏
问题规模n用于表示求解问题大小的正整数,如n个记录排序。
算法的执行时间用时间复杂度来表示。
算法中执行时间T(n)是时间规模n方某个函数f(n),记作:T(n)=O(f(n))
记号“O”读作“大O”,它表示随问题规模n的增大算法执行时间的增长率和f(n)的增长率相同。
“O”的形式定义为:T(n)=O(f(n))表示存在一个正的常数M,使得当n≥n0时都满足:|T(n)|≤M|f(n)|
f(n)是T(n)的上界。
f(n)这种上界可能很多,通常取最接近的上界,即紧凑上界。