美文网首页
算法基础概念(一)

算法基础概念(一)

作者: WinkTink | 来源:发表于2019-05-16 10:03 被阅读0次

一 . 概念

      我们评估一种算法的优劣,可以使用它的时间复杂度和空间复杂度来衡量(一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量),当然,不作特殊说明,我们一般讨论的是该算法的最坏时间复杂度和最坏空间复杂度,即分析最坏情况以估算算法的执行时间的上界。在下面,我们会详细讨论关于斐波那契数列等函数实现的各种算法的时间复杂度和空间复杂度。

二. 时间复杂度

      我们一般采用大O渐进表示法描述一个算法的时间复杂度。时间复杂度主要讨论的是算法执行的次数。

一般算法时间复杂度O(n)的表示方法:

(1)用常数1取代运行时间中的所有加法常数 ;

(2)在修改后的运行次数函数中,只保留最高阶项;

(3)如果最高阶项系数存在且不是1,则去除与这个项相乘的常数;

(4)递归算法的时间复杂度 == 递归总次数*每次递归的次数

                        空间复杂度 == 递归的深度(即树的高度)

常见的时间复杂度有:

        常数阶O(1),

        对数阶O(log2 n),

        线性阶O(n),

        线性对数阶O(n log2 n),

        平方阶O(n^2),

        立方阶O(n^3)

        k次方阶O(n^K),

        指数阶O(2^n)。

        随着n的不断增大,时间复杂度不断增大,算法花费时间越多,通常我们计算时间复杂度都是计算最坏情况 

三. 空间复杂度

       空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。

       一个程序的空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。程序执行时所需存储空间包括以下两部分。  

       固定部分:  这部分空间的大小与输入/输出的数据的个数多少、数值无关。主要包括指令空间(即代码空间)、数据空间(常量、简单变量)等所占的空间。这部分属于静态空间。

       可变空间:  这部分空间的主要包括动态分配的空间,以及递归栈所需的空间等。这部分的空间大小与算法有关。

一个算法所需的存储空间用f(n)表示。S(n)=O(f(n))  其中n为问题的规模,S(n)表示空间复杂度。

计算方法:

        ①忽略常数,用O(1)表示

        ②递归算法的空间复杂度=递归深度N*每次递归所要的辅助空间

        ③对于单线程来说,递归有运行时堆栈,求的是递归最深的那一次压栈所耗费的空间的个数,因为递归最深的那一次所耗费的空间足以容纳它所有递归过程。

相关文章

  • 算法基础概念(一)

    一 . 概念 我们评估一种算法的优劣,可以使用它的时间复杂度和空间复杂度来衡量(一个算法的优劣主要从算法的执...

  • 算法基础概念

    1.算法的定义 算法是解决某个问题的特定的指令序列。 2.算法四个性质: ①输入②输出③确定性④有限性 3.算法的...

  • 算法基础概念

    1、概述 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的...

  • 普林斯顿算法中级笔记4(基础算法,选择排序,插入排序,希尔排序)

    基础算法 一些概念 comparable:下面的算法实现用到了java中的一个业务排序概念。comparable类...

  • 限流算法(一)基础概念

    先铺垫一下限流算法相关的知识,给大家扫个盲,网上先关的概念有很多,我就不自己写了。本文章基础概念部分转至 http...

  • 【Python算法】算法基础-概念区分

    图论: 连通图: 连通图基于联通的概念。在一个无向图中,若顶点a,到b有路径相连,则称a,b是连通的。如果图中的任...

  • 算法入门:堆排序

    基础概念#### 堆排序是比较基础的排序算法,也是我认为比较难的一种算法,因为它的流程比较多,理解起来不会像冒泡排...

  • 计算机科学和Python编程导论 9/10章 算法复杂度&内存和

    1.基础概念 1)算法复杂度 一个算法的时间复杂度,指算法运行的时间。 渐进表达式 转至https://blog....

  • 0.课程介绍及教学说明

    机器学习基础概念和基础知识 机器学习常用算法,分类聚类 机器学习流程 阿里云PAI 云计算、大数据、人工智能的概念...

  • 一致性算法Paxos

    1、一致性算法Paxos 1.1 基础概念 Paxos算法是Lamport提出的一种基于消息传递的分布式一致性算法...

网友评论

      本文标题:算法基础概念(一)

      本文链接:https://www.haomeiwen.com/subject/mjhroqtx.html