zoukankan      html  css  js  c++  java
  • 大话数据结构笔记(二)算法

    1.算法(Algorithm):解决特定问题求解步骤的描述,计算机中为指令的有限序列,每条指令表示一个或多个操作。222

    2.算法的五个基本特性:输入,输出,有穷性,确定性和可行性。

    2.1 输入输出:输入可以为0个参数,输出至少一个。

    2.2 有穷性:在相对可接受的时间内可以自动结束。

    2.3 确定性:算法的每一步都是确定唯一的。

    2.4 可行性:每一步可通过执行有限次步骤完成。

    算法设计的要求:正确性(大部分用数学方法进行证明)标准:对于非法输入数据能够得出满足规格说明的结构。

    可读性,健壮性(对不合法的输入可以做出相关处理),时间效率高和存储量少。

    问题输入规模,输入量的多少。

    3 函数的渐进增长:输入规模n在没有限制的情况下,只要超过一个数值N,这个函数就总大于另一个函数。

    判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,更应该关注主项(最高阶项)的阶数。

    事前估算方法的理论依据:某个算法随着n的增大,会越来越优于另一算法,或越来越差于另一算法。

    4.算法时间复杂度:T(n)-语句执行的次数,n-问题规模,由n的变化分析T(n)的数量级。算法的时间复杂度(算法时间量度)T(n)=O(f(n)),

    随着n的增大,算法执行时间的增长率和f(n)的增长率相同。

    推导大O阶:

    1>用1替换运行时间中的所有加法常数

    2>只保留最高阶

    3>如果最高项存在且不是1,则去除与这个项相乘的常数得到的结构就是大O阶。

    5 单纯的分支结构时间复杂度也是O(1)。

    6 循环的时间复杂度等于循环体的复杂度乘以该循环的运行次数。

    7 常用的时间复杂度所耗费的时间从小到大:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

     8 运行时间——最坏情况的运行时间,平均运行时间-期望的运行时间

    9 复杂度包括时间算法复杂度(运行时间的需求)和空间复杂度(空间需求)。

    2017-10-1615:58:04

  • 相关阅读:
    阿里云下Linux MySQL的安装
    protocol buffer相关
    Unity NGUI UIPanel下对粒子的剪裁
    NGUI中UILabel用省略号替换超出显示区域的内容
    Go交叉编译
    Unity3d使用未破解的TexturePacker
    编程之美 找出符合条件的整数
    算法导论~
    hadoop资料汇总(网上)
    SOE 中调用第三方dll
  • 原文地址:https://www.cnblogs.com/fourmi/p/7674155.html
Copyright © 2011-2022 走看看