• 算法 准备


    一.算法

    1.算法:算法面向一个问题,体现解决问题的流程,问题定义输入和输出的关系,

    2.特点:有穷性、确定性、能行性、输入、输出

    二.算法设计和分析

    1.算法一般用伪代码描述,重点体现流程

    2.算法的运行时间:

    (1)考虑输入的情况,相同规模不同的输入可能导致算法的运行时间不同,比如顺序和逆序的排序

    (2)考虑输入的规模,一般来说,输入规模越大,算法运行时间越长,比如排序6个元素和6万个元素

    (3)考虑到算法运行时间的上界,一般来说,对别人说某个算法的运行时间,只会给出最多运行多少时间,不会给出最少运行时间,因为算法注重的是效率

    (4)考虑到算法在不同机器上的运行速度不同,一般假设算法在相同机器上的运行,也就是不考虑机器对算法的影响,也被称为相对运行速度

    3.分析算法:一般考虑规模为n的算法的最坏运行时间的相对运行时间

    (1)算法的最坏运行时间(通常考虑):最长运行时间,也就是任何输入的运行时间的一个上界

    (2)算法的平均运行时间(偶尔考虑):所有可能输入的加权平均期望时间,必须先知道输入的统计分布

    (3)算法的最好运行时间(一般不考虑):是虚假的,具有欺骗性的数据,因为不会每次都能达到最好的输入,

    4.分析算法的一般方法是渐近分析:(1)忽略低阶项和常系数(2)对于输入规模n的算法只考虑算法的运行时间的增长率或增长量级

    三.渐近分析

    1.典型的增长阶:

    2.增长的记号:

    3.

    =(渐近紧界)

    ,f(n)等于theta(g(n))(f(n)属于theta(g(n))函数集的集合)

     例:θ(n2)<θ(n3)表示当n>某个n0时,前者的性能好于后者

    4.

    <=(最坏运行时间)(渐近上界)

    例1:2n2=O(n3)等价于2n2属于O(n3)的集合

    例2:f(n)=n3+O(n2)表示存在h(n)属于O(n2),使得f(n)=n3+h(n)

    例3:n2+O(n)=O(n2)表示对于任意f(n)属于O(n),存在h(n)属于O(n2),使得n2+f(n)=h(n)

    5. 

    >=(渐近下界)

    6.< 和 >

  • 相关阅读:
    charCodeAt() 和charAt()
    去除全角空格
    string字符串js操作
    取小数的常见操作
    js取最大最小值
    js加减法运算多出很多小数点
    js设置div透明度
    setTimeout设置不起作用
    node.js 找不到 xxx 模块解决办法
    servlet 监听器和过滤器入门
  • 原文地址:https://www.cnblogs.com/yu-liang/p/9123491.html
Copyright © 2020-2023  润新知