算法的一些概念

简介:
  • 通俗的讲,算法可以理解为一个完整的解题步骤,由一些基本运算和规定的运算顺序构成
  • 数据结构是数据的组织形式,可以用来表现特定的对象数据,再简单的来说数据结构就是关系,就是数据元素相互之间存在的一种或多种特定关系的集合,比如你有基友有朋友,这就是你自己的一种结构关系
  • 数据结构分为逻辑结构和物理结构

    • 逻辑结构:是指数据对象中元素之间的相互关系
    • 物理结构:是指数据的逻辑结构在计算机中的存储形式

四大逻辑结构

  • 集合结构:集合结构中的数据元素除了同属于一个集合外,不存在任何的关系

markdown_img_paste_2018112613181978

  • 线性结构:数据元素之间是一对一的关系

markdown_img_paste_20181126132256408

  • 树形结构:元素之间存在一种一对多的层次关系

markdown_img_paste_20181126132746885

  • 图形结构:数据元素是多对多关系的

markdown_img_paste_20181126133048932

物理结构

  • 根据物理结构的定义,实际上研究的就是如何把元素存储到计算机的存储器中(内存,硬盘...)
  • 数据元素的存储结构形式有两种:顺序存储和链式存储

    • 顺序存储:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的(数组)

markdown_img_paste_20181126134448299

  • 链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的,链式存储结构的数据元素存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,通过地址就可以找到相关联数据元素的位置

markdown_img_paste_20181126134530758

算法五个特性

  • 有穷性:算法的指令或者步骤的执行次数是有限的,执行时间也是有限的
  • 确切性:算法的每一个指令或者步骤都必须有明确的定义和描述,不会出现二义性,干啥就是干啥不能模糊
  • 输入:一个算法应该有相应的输入条件,用来刻画运算对象的初始情况
  • 输出:一个算法应该有明确的结果输出
  • 可行性:算法的执行步骤必须是可行的,且可以在有限时间内完成

算法设计要求

  • 正确性

    • 算法程序没有语法错误
    • 算法程序对于合法输入能够产生满足要求的输出
    • 算法程序对于非法输入能够产生满足规格的说明
    • 算法程序对于故意刁难的测试输入都有满足要求的输出结果
  • 可读性

    • 便于阅读,理解和交流
  • 健壮性

    • 当输入不合法的时候,算法也能作出相关处理,而不是产生异常或者莫名其妙的结果
  • 时间效率高和存储量低:即执行快,内存消耗少

算法的表示

  • 自然语言表示:即人们平时的口头语言,对一些简单算法,口头语言就可以讲述清楚
  • 流程图表示

markdown_img_paste_20181126083629109

  • 一般会采用三种流程结构

    • 顺序结构

markdown_img_paste_20181126083918378

  • 分支结构

markdown_img_paste_2018112608421958

  • 循环结构

markdown_img_paste_20181126084742982

  • 当型循环是先进行P条件的判断,然后执行A,一般是采用while语句来实现
  • 直到型循环是先执行A,然后在判断P条件,一般采用do_while实现
  • N-S图表示

markdown_img_paste_20181126085928309

  • 伪代码表示:即结合语言和代码表示算法的一种形式,比如

    a <- 输入
    b <- 输入
    if a>b
      max = a
    else
      max = b
    输出 -> max
目录
相关文章
|
1月前
|
算法 调度
【算法设计与分析】— —基础概念题(one)可作为日常联系或期末复习
【算法设计与分析】— —基础概念题(one)可作为日常联系或期末复习
47 1
|
6月前
|
算法 C语言
【数据结构与算法】树、二叉树的概念及结构(详解)(上)
【数据结构与算法】树、二叉树的概念及结构(详解)(上)
|
8天前
|
机器学习/深度学习 自然语言处理 算法
|
2月前
|
算法 安全 物联网
【国密算法】理解国密算法的基础概念
【国密算法】理解国密算法的基础概念
|
6月前
|
存储 算法 C语言
二叉树的概念和性质/向上调整、向下调整算法/堆的插入和删除/堆排序/Top-K问题【上】【数据结构/二叉树/初阶/C语言实现】
二叉树的概念和性质/向上调整、向下调整算法/堆的插入和删除/堆排序/Top-K问题【上】【数据结构/二叉树/初阶/C语言实现】
26 0
|
2月前
|
存储 分布式计算 负载均衡
浅谈分布式共识算法概念与演进
浅谈分布式共识算法概念与演进
41 0
|
3月前
|
存储 JavaScript 算法
TypeScript算法专题 - [双链表1] - 双链的概念及其实现
TypeScript算法专题 - [双链表1] - 双链的概念及其实现
25 0
|
3月前
|
人工智能 自然语言处理 算法
算法01-算法概念与描述
算法01-算法概念与描述
|
4月前
|
存储 算法 Python
Python 数据结构和算法: 解释动态规划的概念,并提供一个实际应用的例子。
Python 数据结构和算法: 解释动态规划的概念,并提供一个实际应用的例子。
|
4月前
|
缓存 算法 搜索推荐
算法基础概念
算法基础概念
27 2