1、算法的概念

算法是问题求解过程中的精确描述,它为解决某一特定类型的问题规定了一个运算过程。

2、算法的特点

2.1 有穷性

一个算法必须在有穷的步骤结束后结束,并且每一步都在有穷时间内完成。

2.2 确定性

算法的执行过程中每一步都要有确定的定义,不能存在歧义。

2.3 可行性

算法应该是可以实现的,就是在有穷的步骤实现想要的结果。

2.4 输入

算法可以有零个或者多个输入,它作为初始数据为实现算法的结果提供初始量或被加工的数据对象。

2.5 输出

一个算法有一个或者多个输出,它们是与输入有特定关系的量。

3、优秀算法的特点

正确性、可读性、健壮性、效率高占用资源少。

4、算法描述的方式

4.1 流程图(Flow Chat)

流程图是最古老、流行最广泛的一种算法的图形表示法。每个算法都可由若干张流程图表示。流程图给出了算法中所进行的操作以及执行这些操作的逻辑顺序。

流程图的基本符号

求最大公约数

4.2 N/S 盒图

盒图是支持结构化程序设计产生的一种描述工具。分为顺序结构、选择结构、多选择结构 、while-do 循环结构、repeat-until循环结构,调用结构。

4.3 伪代码

用伪代码描述算法的特点是借助程序语言的语法结构 和自然语言描述,使算法具有良好的结构而又不拘泥于程序语言的限制。这样的算法易读易写,容易转换为程序。

4.4 决策表

决策表是一种图形表格,它可以将比较复杂的决策问题,简洁明了的方式呈现出来。如图:

5 、算法效率

算法效率是决定一个算法优劣的非常重要的一点,任何算法在计算机上执行都会消耗时间和存储空间资源。消耗时间和存储空间资源分别用时间复杂度和空间复杂度来体现。

语句频度:是指算法语句被重复执行的次数。

算法的执行时间:算法中各个基本语句的语句频度之和。

例如:语句频度为 1、n、n^2 时间复杂度分别为O(1) 常量阶、O(n) 线性阶、O(n^2) 平方阶。若三个是一个整体,算法的时间复杂度为 O(n^2)。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

数据结构基础:算法的基础知识笔记相关推荐

  1. 大话数据结构与算法:基础篇

    1.数据结构的重要性 数据结构是计算机软件相关专业的基础课程,几乎可以说,要想从事编程工作,无论是否是科班出身(比如我,标准的非科班人员,我是学医的,哈哈)都不可以绕过数据结构与算法这部分知识. 数据 ...

  2. 数据结构与算法之基础概述

    目录 数据结构和算法的重要性 数据结构概述 逻辑结构 存储结构 算法概述 如何理解"大O记法" 时间复杂度 空间复杂度 数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海 ...

  3. 数据结构与算法学习——基础知识(一)

    数据结构与算法 线性结构和非线性结构 基本概念 线性结构 非线性结构 稀疏数组 基本概念 稀疏数组的处理方法 举例说明 应用实例 代码实例 队列 基本介绍 示意图 数组模拟队列 思路分析 代码实现 数 ...

  4. 【数据结构与算法】基础数据结构与算法大全

    一.用过的编程语言 Java Python JavaScript 二.数据结构的知识梳理 数据结构入门基础梳理 数据结构一些基本常识的笔记 算法复杂度的几点笔记 对顺序表动态分配方式的思考 循环队列的 ...

  5. 项目测试基础:白盒测试相关知识笔记

    1.白盒测试概念 白盒测试又称为结构测试,主要是根据程序的内部结构和逻辑来设计测试用例,然后对程序的路径和过程进行测试,检查是否满足设计的需要. 2.白盒测试常用的技术介绍 白盒测试常用的技术有逻辑覆 ...

  6. 项目测试基础:黑盒测试相关知识笔记

    1.软件测试方法分类 静态测试:主要指测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测. 人工检测:靠人工审查程序或评审如啊你就按,包括代码检查.静态结构分析.代码质量 ...

  7. 操作系统基础:计算机作业管理知识笔记

    1.计算机作业的概念 计算机中的作业是为了完成某个用户的计算任务所做工作的总和. 作业管理程序:操作系统中用来控制作业进入.执行.撤销的一组程序. 2.作业与作业的控制方式 脱机控制方式:用户需要把自 ...

  8. 计算机系统基础:文件管理相关知识笔记

    一.文件的相关概念 1.为什么要有文件管理? 文件系统主要是为了方面用户访问外部存储器信息,而不去关注内部存储的机制,只需要根据文件名就可以高效的存取信息. 2.文件的定义 文件是这一组具有符号名.在 ...

  9. 计算机系统基础:磁盘调度知识笔记

    1.磁盘调度介绍 磁盘可以被多个进程共享的设备,如果有多个进程请求访问磁盘时,为了保证信息的安全,系统的每一时刻只允许一个进程进入磁盘进行I/O操作,别的进程需要等待. 磁盘需要采用一种适当的算法,使 ...

  10. 计算机系统基础:虚拟存储管理知识笔记

    1.虚拟存储管理概念 一个计算机任务只需要部分装入主存便可以启动运行,其余部分留在磁盘上,在需要的时候装入主存,这样可以提高主存空间的利用率.这样该系统所具有的主存容量会比实际主存容量大很多,这样的存 ...

最新文章

  1. 漫画:设计模式之 “外观模式”
  2. Serverless,后端小程序的未来
  3. python兼职平台信号处理_如何在Windows机器上处理python中的信号
  4. 利用qsort二级排序
  5. 【记录】jenkins 安装及环境配置(一)
  6. golang实现RPC的几种方式
  7. c++ time.h 用法
  8. 【转】杜月笙识人秘诀!!
  9. Toon Boom Harmony 12 for Mac(二维动画设计工具)
  10. Linux下编译googletest
  11. java对谷歌不兼容_谷歌浏览器不兼容的一些Js
  12. 相亲交友小程序,案例:情深深之恋
  13. ISO27001风险评估实施流程(详细版)
  14. python拟合二元一次函数
  15. 游戏使用html签名,利用HTML5实现电子签名板文字涂鸦代码
  16. 苹果14手机怎么投屏到mac电脑上面?
  17. web前端开发工程师养成记
  18. (原)python中matplotlib的颜色及线条控制
  19. springMVC中ajax使用json 对象 出现 状态代码: 415 Unsupported Media Type
  20. ksy是谁_你还记得谁?人皇Sky曝曾经魔兽知名选手近况

热门文章

  1. mkyaffs2image的用法
  2. 腐蚀函数cvErode 和 膨胀函数cvDilate
  3. 有限元笔记06-三维实体单元
  4. VINS状态估计篇-视觉sfm初始化
  5. oracle 命令日志输出,ORACLE常用命令日志
  6. 编程 跳台阶_Java版剑指offer编程题第8题--跳台阶
  7. php 结构体_【开发规范】PHP编码开发规范下篇:PSR-2编码风格规范
  8. Vue学习笔记(八) 组件进阶
  9. TensorFlow: couldn’t open CUDA library cupti64_80.dll、InternalError: Blas SGEMM launch failed
  10. WCF netTcpBinding寄宿到IIS7