伪代码与时间复杂度

伪代码规则:注意关键字不区分大小写
变量声明语句: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)的公约数

 

    原文作者:算法小白
    原文地址: https://www.cnblogs.com/beibeiblogs/p/5170142.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞