伪代码与时间复杂度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了伪代码与时间复杂度相关的知识,希望对你有一定的参考价值。

伪代码规则:注意关键字不区分大小写
变量声明语句:Dim<变量> As <类型> 如:Dim a As INTEGER;
赋值语句:<变量>=<表达式> 如:a = 1; 或 a <- 1;
输入与输出:Input 与Output;
简单运算符:a + b > c;
复合条件:(a < b) AND (c < d);
IF条件子句:
if a = b Then
    i = i + 1;
    Else i = i - 1
EndIf
多重选择case子句:
case <变量> of
case 1: <条件>
    i = i  + 1;
case 2: <条件>
    i = i + 2;
EndCase
For循环子句:
For<计数器>=<开始>To<结束>
<循环体>
EndFor
While循环子句:
Do While <条件> 或 While
<循环体>
EndWhile
Until 循环子句:
Do
<循环体>
Until<条件>
 
算法分析:
技术分享
 技术分享技术分享
时间复杂度:
往往只关注最坏情况的运行时间,所以只求算法的最长时间;
只关注最重要的增长量级,比如 an² + bn + c,只关注n²;
算法中常用符号:
渐近符号:

(1)O符号,渐近紧确上界,f(n) = O(g(n)),表示存在正常量c和n0使得对所有n ≥ n0,有  0 ≤ f(n) ≤ cg(n) ,即小于等于,f(n)不高于g(n)的阶;

(2)Ω符号,渐近紧确下界,f(n) = Ω(g(n)),表示存在正常量c和n0使得对所有n ≥ n0,有  0 ≤ cg(n) ≤ f(n) ,即大于等于,f(n)不低于g(n)的阶;

(3)o符号,非渐近紧确上界,f(n) = o(g(n)),表示存在正常量c和n0使得对所有n ≥ n0,有  0 ≤ f(n) < cg(n) ,即小于,f(n)低于g(n)的阶;

(4)ω符号,非渐近紧确下界,f(n) = ω(g(n)),表示存在正常量c和n0使得对所有n ≥ n0,有  0 ≤ cg(n) < f(n) ,即大于,f(n)高于g(n)的阶;

(5)Θ符号,渐近紧确界,f(n) = Θ(g(n)),表示存在正常量c1,c2,n0使得对所有n ≥ n0,有 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n),f(n)与g(n)同阶;

举例说明渐近符号的相关用法:

1、插入排序的时间复杂度是O(n²),代表插入排度的时间复杂度是一个小于等于n²的集合(1,n,n²等),时间复杂度即可以是1也可以是n²;

2、如果时间复杂度是Θ(2n²),代表时间复杂度可以是n²,2n²,3n²等;

3、如果时间复杂度是Ω(n²),代表时间复杂度可以是n²,n^3等;

4、如果时间复杂度是o(n²),代表时间复杂度可以是1,n,2n等但不是能n²;

5、如果时间复杂度是ω(n²),代表时间复杂度可以是n^3,n^4等但不是n²;

标准记号与常用函数:

1、下取整(floor)与上取整(ceiling);

2、取模运算: a mod b的值即a/b的余数;

3、整除:a | b;

4、对数:

技术分享

技术分享

欧几里得算法:
两个整数的最大公约数,等于小整数与两整数相除的数的最大公约数;
证明:

a可以表示成a = kb + r,则r = a mod b                      

假设d是a,b的一个公约数,则有

d|a, d|b,而r = a - kb,因此d|r

因此d是(b,a mod b)的公约数

假设d 是(b,a mod b)的公约数,则

d | b , d |r ,但是a = kb +r

因此d也是(a,b)的公约数

 

以上是关于伪代码与时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

伪代码

计算伪代码的时间复杂度

如何计算以下伪代码的时间复杂度:

关于代码片段的时间复杂度

以下代码片段的时间复杂度是多少?

以下代码片段的算法复杂度