算法的一些概念

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

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

四大逻辑结构

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

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
目录
相关文章
|
3月前
|
存储 算法
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
这篇文章详细介绍了图的概念、表示方式以及深度优先遍历和广度优先遍历的算法实现。
74 1
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
|
7月前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
64 0
|
5月前
|
机器学习/深度学习 算法
【机器学习】解释对偶的概念及SVM中的对偶算法?(面试回答)
解释了对偶的概念,指出对偶性在优化问题中的重要性,尤其是在强对偶性成立时可以提供主问题的最优下界,并且详细阐述了支持向量机(SVM)中对偶算法的应用,包括如何将原始的最大间隔优化问题转换为对偶问题来求解。
113 2
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之深度学习算法概念
深度学习算法是一类基于人工神经网络的机器学习方法,其核心思想是通过多层次的非线性变换,从数据中学习表示层次特征,从而实现对复杂模式的建模和学习。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大的成功,成为人工智能领域的重要技术之一。
104 3
|
7月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
7月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
144 7
|
7月前
|
搜索推荐 算法
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
|
7月前
|
存储 NoSQL 算法
Redis集群,集群的概念 三种主流分片方式1.哈希求余 一致性哈希算法:方案三:哈希槽分区算法问题一Redis集群是最多有16384个分片吗问题二:为什么是16384个,集群扩容:1.新的主节点
Redis集群,集群的概念 三种主流分片方式1.哈希求余 一致性哈希算法:方案三:哈希槽分区算法问题一Redis集群是最多有16384个分片吗问题二:为什么是16384个,集群扩容:1.新的主节点
|
8月前
|
存储 机器学习/深度学习 算法
数据结构与算法⑬(第四章_中_续二)堆解决Topk问题+堆的概念选择题
数据结构与算法⑬(第四章_中_续二)堆解决Topk问题+堆的概念选择题
64 3
|
7月前
|
存储 算法
【二叉树】数据结构——BST二叉树基本概念及算法设计(插入、删除、遍历操作)
【二叉树】数据结构——BST二叉树基本概念及算法设计(插入、删除、遍历操作)