dedecms 把自己的网站添加进去,网络口碑营销名词解释,新万网,提高wordpress访问速度文章目录算法时间复杂度算法时间复杂度 要判断算法的好坏#xff0c;可以从时间方面进行分析。算法运行的越快#xff0c;所用的时间越短则算法越好。但是同一个算法在不同的平台上的运行时间不同。那么又该如何进行评判呢#xff1f;我们采用时间复杂度进行衡量。 1.算法时…
文章目录算法时间复杂度算法时间复杂度 要判断算法的好坏可以从时间方面进行分析。算法运行的越快所用的时间越短则算法越好。但是同一个算法在不同的平台上的运行时间不同。那么又该如何进行评判呢我们采用时间复杂度进行衡量。 1.算法时间复杂度定义 在进行算法分析时 语句总的执行次数T(n)T(n)是关于问题规模nn的函数进而分析T(n)T(n)随nn的变化情况并确定T(n)T(n)的数量。算法的时间复杂度。也就是算法的时间量度记做T(n)O(f(n))T(n)O(f(n))。它表示随问题规模nn的增大算法执行时间的增长率和f(n)f(n)的增长率相同称作算法的渐近时间复杂度简称为时间复杂度。 其中f(n)f(n)是问题规模nn的某个函数。 个人理解:由于不同的机器指令执行的速度不一样而我们的代码又常常是跑在多台不同机器上的为了找出与机器无关但又可以说明代码效率的量标于是就选择时间复杂度只与代码的执行次数有关即:T(N)。一般情况下随着N不断增大T(N)增长缓慢的算法时间复杂度越低算法越好。 2.如何分析一个算法的时间复杂度
顺序结构时间复杂度等于每步相加选择分支结构时间复杂度等于最大时间复杂度的那个分支循环结构时间复杂度每个循环体相乘用常数1取代运行时间中的所有加法常数只保留阶数最高的那一项高阶项前面的系数可以直接用1替代。
时间复杂度为O(1)
int a 1 , b 3 , sum 0; //执行1次
sum a b; //执行1次
coutthe sum is :sumendl; //执行1次 // 111 3 -- O(1)时间复杂度为O(N)
//执行N次
for(i0;in;i){printf(the data is %d\n,i)
} // N * 1 N --- O(N)时间复杂度为O(N^2)
//执行N次
for(j0;jn;j){ //执行N次for(i0;in;i){ //执行N次printf(the data is %d\n,i) }
} //N * N N^2 ----- O(N^2)时间复杂度为O(logN)
//执行N/2次
while(in){countthe data is :iendl;i i*2;
} 常用的时间复杂度所耗费的时间从小到大依次是 O(1)O(logn)O(n)O(nlogn)O(n2)O(n3)O(2n)O(n!)O(nn) 3.最坏情况
最坏情况运行时间是一种保证那就是运行时间将不会再坏了。一般在没有特殊说明的情况下都是指最坏时间复杂度。
4.平均情况
平均运行时间是所有情况中最有意义的因为它是期望的运行时间。
5.递归算法的时间复杂度的计算
在算法的分析中当一个算法中包含递归调用时其时间复杂度的分析会转化成为一个递归方程的求解。而对递归方程的求解方法多种多样目前主流的方法代入法迭代法公式法母函数法差分方程法。