时间复杂度的定义:
一般情况下,算法中基本操作重复执行的次数是为体规模n的某个函数f(n),算法的时间度记作:
T(n) = O ( f(n) )
它随着为题规模n的增大,算法执行的时间的增长率和f(n)的增长率相同,称作渐近时间复杂度,简称时间复杂度。那么我们如计算时间复杂度呢?
首先分T(n)是不是常数:
是,时间复杂度就是O(1)。(一般时间复杂度我们用O(n)表示,n为计算出的时间复杂度)
否,时间复杂度为保留的最高次数项的系数。(列如T(n)=n^3+n^2,就应写成:T(n)=O(n^3),当遇到有常数时,应去掉常数项,列如:T(n)=3*n^3+8,就应写成:T(n)=O(n^3)。接下来我就用代码来看一下几个例子:
1.时间复杂度为对数的:
void fun(int n)
{
for (int i = 0; i < n; i *= 2)
{
printf("小傻瓜\n");
}
} /*调用这个函数,时间复杂度为:2^T(n)=n-->T(n)=log n(其中2是常数要省略)*/
2.执行分支语言时,时间复杂度原则这时十一运行最长的分支:
void part(int n)
{
int i = 0;
if (ret = !0)
{
for (i =