Maoyl's blog Maoyl's blog
首页
  • 前端基础

    • HTML
    • CSS
    • CSS动画
    • JavaScript文章
    • stylus
  • 性能优化

    • 《性能优化》笔记
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《JavaScript设计模式》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架

    • Vue相关
    • React相关
  • 前端监控

    • 前端监控简介
  • 学习笔记

    • 《Vue》笔记
    • 《React》笔记
    • 小程序学习笔记
  • 后端基础

    • Nodejs
  • 学习笔记

    • 数据结构
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • 网页性能
  • 学习笔记

    • 《Git》学习笔记
    • 《Vim》学习笔记
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

maoyln

日日行,不怕千万里
首页
  • 前端基础

    • HTML
    • CSS
    • CSS动画
    • JavaScript文章
    • stylus
  • 性能优化

    • 《性能优化》笔记
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《JavaScript设计模式》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架

    • Vue相关
    • React相关
  • 前端监控

    • 前端监控简介
  • 学习笔记

    • 《Vue》笔记
    • 《React》笔记
    • 小程序学习笔记
  • 后端基础

    • Nodejs
  • 学习笔记

    • 数据结构
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • 网页性能
  • 学习笔记

    • 《Git》学习笔记
    • 《Vim》学习笔记
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 第一讲 基本概念

    • 1 什么是数据结构
    • 2 什么是算法
      • 算法(Algorithm)定义特点
      • GPT4解释
      • 什么是好算法
    • 3 应用实例:最大子列和问题
  • 第二讲 线性结构

  • 第三讲 树(上)

  • 第四讲 树(中)

  • 第五讲 树(下)

  • 第六讲 图(上)

  • 《数据结构》学习笔记
  • 第一讲 基本概念
maoyln
2024-06-18
目录

2 什么是算法

# 什么是算法

# 算法(Algorithm)定义特点

  • 一个有限指令集
  • 接受一些输入(有些情况下不接受输入)
  • 产生输出
  • 一定有限步骤中终止
  • 没有条指令必须
    • 有充分明确的目标,不可以有歧义
    • 计算机能处理的范围之内
    • 描述应不依赖于任何一种计算机语言以及具体的实现手段

# GPT4解释

算法是解决特定问题步骤的有序集合,是定义明确的计算过程,接受一些值或一组值作为输入,并产生一些值或一组值作为输出。简而言之,算法就是执行特定任务或解决特定问题的一系列指令。

特点

  1. 有限性:算法必须在执行有限步骤后终止。
  2. 确定性:算法的每一步骤都有明确的定义,不会出现二义性。
  3. 输入:一个算法有0个或多个输入,这些输入取自于特定的对象集合。
  4. 输出:一个算法有一个或多个输出,这些输出是与输入相关联的数据处理结果。
  5. 有效性:算法的每一步都必须足够基本,以至于它们可以准确地以纸笔方式执行,并在有限的时间内完成。

算法的设计和分析是计算机科学中的一个重要部分,它影响到程序的效率和性能。在设计算法时,我们通常关注以下几个方面:

重要关注

  1. 正确性:算法是否能正确解决问题。
  2. 效率:算法执行所需的资源量,通常指时间复杂度和空间复杂度。
  3. 可读性:算法是否易于理解,这对于维护和调试代码非常重要。

算法可以用伪代码、流程图、自然语言或编程语言来描述。在计算机科学中,研究算法的目的是为了找到更高效的方法来解决问题,包括但不限于排序、搜索、优化问题、数据压缩、加密解密等领域。

# 什么是好算法

  1. 空间复杂度:根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。
  2. 时间复杂度:根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规模有关。时间复杂度过高的低效算法可能导致我们在有生之年都等不到运行结果。

在分析一般算法效率时候,我们经常关注下面两种复杂度

  • 最坏情况复杂度T worst( n )
  • 平均复杂度T avg( n )

T avg( n) <= T worst( n)

编辑 (opens new window)
#数据结构
上次更新: 2025/04/18, 01:42:12
1 什么是数据结构
3 应用实例:最大子列和问题

← 1 什么是数据结构 3 应用实例:最大子列和问题→

最近更新
01
GSAP动画库——如何高效写动画
04-17
02
自适应方案PxToRem
09-10
03
性能优化-requestAnimationFrame
08-10
更多文章>
Theme by Vdoing | Copyright © 2019-2025 备案号:京ICP备19058102号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式