01 算法时间复杂度

算法时间复杂度

在这里插入图片描述

1. 算法

  1. 定义: 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
  2. 特性:
    1. 输入输出
    2. 有穷性
    3. 确定性
    4. 可行性
  3. 算法设计的要求
    1. 正确性
    2. 可读性
    3. 健壮性
    4. 时间效率高和存储量低
      1. 时间效率:算法的执行时间
      2. 存储量:算法在执行过程中需要的最大存储空间:主要指算法程序运行时所占有的内存或外部硬盘存储空间。

2. 算法效率的度量方法

  1. 事后统计方法:不推荐

  2. 事前统计方法:推荐

    1. 一个程序的运行时间,依赖于算法的好坏和问题的输入规模(问题输入规模是指输入量的多少)
    2. 不同的算法,在问题规模(n值)越大,它们在时间效率上的差异也就越来越大。
    3. 判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数

3. 算法时间复杂度

在进行算法分析时,语句总得执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称做算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。

  1. 分析算法的复杂度,关键就是要分析循环结构的运行情况

    1. 常数阶:O(1)
    2. 线性阶:O(n)
    3. 对数阶:O(logn)
    4. 平方阶:O(n² )
  2. 常用的时间复杂度所耗费的时间从小到大依次是:

    O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

  3. 最坏情况和平均情况

    • 最坏情况运行时间是一种保证,那就是运行时间将不会再坏了。在应用中,这是一种最重要的需求,通常,除非特别指定,后面提到的运行时间都是最坏情况的运行时间。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章