• 21天学习挑战:经典算法---算法概念引入


    活动地址:CSDN21天学习挑战赛

    21天学习挑战:经典算法---算法概念引入

    算法概念

    任何被明确定义的计算过程可以称作算法,它将某个值活一组值作为输入,并产生莫格值或一组值作为输出。所以算法可以被称作将输入转为输出的一系列的计算步骤。

    这样的概况是比较抽象和标准的,其实说白了就是步骤明确的解决问题的方法。由于是在计算机中执行,所以通常先用伪代码表示,清晰的表达出思路和步骤。这样真正执行的时候,就可以使用不同的语言来实现出相同的兄啊过给。

    概况的说,算法就是解决问题的工具。在描述一个算法时,我们关注的是输入与输出。也就是说只要把原始数据和结果描述清楚了,那么算法所作的事情也就清楚了。

    在设计一个算法时也是需要先明确我们有什么和我们要什么。

    在这里插入图片描述

    相关概念

    数据结构

    算法经常会和数据结构一起出现,这是因为对于同一个问题,使用不同的数据结构来存储数据,对应的算法可能千差万别。
    所以在整个学习过程中,也会涉及到各种数据结构的使用
    常见的数据结构包括:

    • 数组
    • 队列
    • 链表
    • 树等等

    算法的效率

    在一个算法设计完成后,还需要对算法的执行情况作一个评估。一个好的算法,可以大幅度的节省资源消耗和时间。在进行评估时不需要太具体,毕竟数据量是不确定的,通常是以数据量为基准确定一个量级。

    通常会使用到两个概念:

    • 时间复杂度
    • 空间复杂度

    时间复杂度

    通常把算法中的基本操作重复执行的频度称为算法的时间复杂度。算法中的基本操作一般是指算法中最深层循环内的语句(赋值、判断、四则运算等基础操作)。我们可以把时间频度记为T(n),它与算法中语句的执行次数成正比。其中的n被称为问题的规模,大多数情况下为输入的数据量。

    对于每一段代码,都可以转为常数或者与n相关的函数表达式,记作f(n)。如果我们把每一段代码的花费的时间加起来就能够得到一个刻画时间复杂度的表达式,在合并后保留量级最大的部分即可确定时间复杂度。

    空间复杂度

    程序从开始执行到结束所需要的内存量。也就是整个代码中最大需要占用多少的空间。为了评估算法本身,输入数据所占用的空间不会考虑,通常更关注运算时需要额外定义多少临时变量或多少存储结构。

  • 相关阅读:
    骗赞小程序(仅供恶搞)
    Nginx安全加固
    平面设计师一定要知道的趁手工具
    SpringBoot的启动原理
    解决kafka消费积压问题
    C Primer Plus(6) 中文版 第6章 C控制语句:循环 6.5 for循环
    【微服务容器化】第二章-Docker常用命令
    在MySQL中使用VARCHAR字段进行日期筛选
    dreamweaver家乡主题网页设计 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 HTML5期末大作业
    GreenPlum/PostGreSQL表锁处理
  • 原文地址:https://blog.csdn.net/qq_32761549/article/details/126115173