《2020王道》

2023-11-03

绪论


数据结构基本概念

数据

数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。

数据元素

数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可有若干个数据项组成,数据项是构成数据元素的不可分割的最小单位

数据对象

数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

数据类型

数据类型是一个值的集合和定义在此集合上的一组操作的总称。

抽象数据类型

抽象数据类型(ADT)是指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表达和实现无关联,即无论其内部结构如何变化,只要它的数学特性不变,都不会影响其外部的使用。

数据结构

数据结构是相互之间存在一种或者多种特定关系的数据元素的集合,包括三个方面:逻辑结构、存储结构数据的运算


数据结构三要素

逻辑结构

逻辑结构是指数据元素之间的逻辑关系,与数据的存储无关。分为线性结构和非线性结构。
线性结构包括:一般线性表、栈、队列、串、数组、广义表
非线性结构包括:集合、树、图

存储结构

存储结构是只数据结构在计算机中的表示(即映像),包括苏剧元素的表示和关系的表示。存储结构是用计算机语言实现的逻辑结构,依赖于计算机语言(依赖于逻辑结构)。存储结构主要有顺序存储、链式存储、索引存储和散列存储。
顺序存储:将逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素中间的关系由存储单元的邻接关系来体现。其优点是可以实现随机存储
链式存储:借助指示元素存储地址的指针来表示元素之间的逻辑关系,有点事可以充分利用存储单元,不会出现碎片现象
索引存储:在存储元素信息的同时,建立附加的索引表,索引表的项称为索引项,其一般形式为(关键字,地址)。优点是检索速度快,缺点是索引表占用了额外的存储空间。
散列存储:根据元素的关键字直接计算出该元素的存储地址,又称Hash存储


算法和算法评价

算法的基本概念

算法(Algorithm)是对特定问题求解步骤的一种描述,是指令的有限集合,其中的每一条指令表示一个或者多个操作。
算法具有五个重要特性

  • 有穷性:一个算法(对任意合法输入值)必须总是在执行有穷步之后会结束,且每一步都在有穷时间内完成;
  • 确定性:算法中每条指令必须有确切的含义,即对于相同的输入只能得到相同的输出;
    -** 可行性**:算法中描述的操作都可通过已经实现的基本运算执行有限次来实现;
    -** 输入**:一个算法有零个或者多个输入,这些输入取自于某个特定的对象的集合;
  • 输出:一个算法有一个或者多个输出,这些输出是与输入存在某种特定关系的量。

算法的目标

  • 正确性:算法应该能够正确地求解问题;
  • 可读性:算法应该具有良好的可读性,方便人们理解;
  • 健壮性:但输入非法数据时,算法能够适当地做出反应或者进行处理,而不会产生莫名其妙的输出结果;
  • 效率:指算法执行的时间;
  • 低存储要求:存储量要求是指算法执行过程中所需要的最大存储空间,这两者都与问题的规模有关。

算法效率的度量

时间复杂度

一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度值得即为 T ( n ) T(n) T(n),是该算法问题规模n的函数。
时间复杂度分析 T ( n ) T(n) T(n)的数量级,而算法中的基本运算(最深层次循环内的语句)的频度与 T ( n ) T(n) T(n)同数量级,因此算法的时间复杂度记为 = = T

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《2020王道》 的相关文章

  • [pg]数据库的并发控制

    参考 章 13 并发控制 数据库并发事务控制四 postgresql数据库的锁机制二 表锁 PostgreSQL 事务处理和并发控制 PostgreSQL并发控制 MVCC 事务 事务隔离级别 数据库中Select For update语句
  • Python使用Opencv图像处理方法完成手势识别(三)tkinter制作GUI界面

    前面对手势识别已经差不多完成 这一章来制作一个手势识别GUI界面和说一下精确度不够问题所在 首先是精确度不够的问题 让手势更规范 手掌张开点 首先应该调节Hsv阈值 因为手掌和环境颜色与我的可能有差异 调整面积 周长阈值 距离阈值 面积阈值

随机推荐

  • 2022黑马SpringBoot跟学笔记(一)

    2022黑马SpringBoot跟学笔记一 SpringBoot 1 SpringBoot简介 1 1 SpringBoot快速入门 1 1 1 开发步骤 1 1 1 1 创建新模块 1 1 1 2 创建 Controller 1 1 1
  • R语言调色板及填充实战:scale_colour_brewer与scale_fill_brewer函数

    R语言调色板及填充实战 scale colour brewer与scale fill brewer函数 在使用ggplot2进行数据可视化时 我们经常需要对图像的颜色进行调整以增强其视觉效果 R语言中提供了scale colour brew
  • 告别宽表,用 DQL 成就新一代 BI

    BI商业智能这个概念已经提出好几十年了 这个概念本身比较宽泛 不同人也有不同的理解和定义 但落实到技术环节 特别是面向业务用户的环节 所称的BI 基本就是指的多维分析或者自助报表 不管是叫自助报表还是多维分析 也都是一回事 都是让用户自己去
  • 数据库中查询的数据是多条,可是显示出来的只有一条,为什么?

    1 首先附上代码 public List
  • Redis学习笔记5:Jedis、RedisTemplate

    一 Jedis是什么 Jedis是Redis官方推荐的Java连接开发工具 要在Java开发中使用好Redis中间件 必须对Jedis熟悉才能写成漂亮的代码 详细了解 https www jianshu com p a1038eed6d44
  • nacos登录 提示权限认证失败 没有命名空间的访问权限

    前言 环境 centos7 9 nacos 2 2 2 问题描述 最近在部署nacos 2 2 2版本的时候 这是目前2023年4月份最新版本 发现按照start out日志给出的登录地址 http 192 168 158 128 8848
  • TensorFlow.js 和 Node-RED 图像识别应用程序

    在本文中 我们将看看您可以将这两种流行的开源软件工具组合起来做什么 使用 Node RED 创建示例图像识别流程 我们的目标是在 Node RED 中创建一个流来识别图像中的对象 如下面的屏幕截图所示 使用黄色节点组件从浏览器上传文件后 可
  • 【韧性设计模式】韧性设计模式:重试、回退、超时、断路器

    什么是韧性 软件本身并不是目的 它支持您的业务流程并使客户满意 如果软件没有在生产中运行 它就无法产生价值 然而 生产性软件也必须是正确的 可靠的和可用的 当谈到软件设计中的弹性时 主要目标是构建健壮的组件 这些组件既可以容忍其范围内的故障
  • IOS App 的图标和启动图的烦恼

    前言 好多iOS App的开发者都会面临的一个问题 那就是 App 的图标 icon 和启动图 launch images 一些没有经验 指的是没做过App审计的 的UI设计师 不知道该怎么做 他就会问开发者 这个时候就是你展示的时候 其实
  • git format-patch命令介绍

    git format patch的使用 1 在dev1分支上 打出所有dev1分支在master分支基础上的patch git format patch master 结果为d1c1 patch d1c2 patch 2 在dev1分支上
  • Win10 修改JAVAHOME环境变量无效,默认java -version未改变

    Win10 修改JAVAHOME环境变量无效 默认java version不变问题 1 造成该原因的三个路径 环境变量 2 解决方法 1 造成该原因的三个路径 环境变量 1 C Program Files x86 Common Files
  • 使用R读取并查看数据

    本篇文章介绍如何使用R读取并查看数据 包含一些最基础的函数使用方法和说明 后面还会陆续介绍数据清洗 匹配和提取等相关的操作 查看函数帮助 对于新手来说 在使用R时最重要的是了解不同函数的使用方法 很多时候我们都是边用边学的状态 拿到一个函数
  • CRM部署以流程为核心

    大多数国内企业还不太习惯流程 尤其是精细化管理的流程 如果有流程 也可能是粗放型的流程 因为我们还是更注重结果 不太习惯过程管理 我们还是更注重每个人干什么 而不太习惯整体协同 在这样的基础上 大部分企业在部署CRM的时候 就或左或右的进入
  • GitHub Copilot收费了

    今天一早收到邮件看到提示收费的邮件 才想起来还有个这个插件 废话少说直接链接 https github com features copilot 个人看法 功能 首先功能确实是比一般的代码提示强不少 但要做到 我 hello GitHub
  • vue-cli项目中静态文件过大的问题

    我们最近在做一个项目时 因为static 文件中含有几个视频文件 导致static 文件过大 build 的时候非常慢 在这我大概介绍一下上面问题的解决方法 首先我们先要了解一下 webpack 的一个插件 拷贝插件 copy webpac
  • Linux系统安装VMware Tools和同W7共享文件遇到的问题

    我用的系统为CentOS6 5 minimal版本 minimal版本默认不启动网络 所以要自己配置 vi etc sysconfig network script ifcfg eth0 1 NM CONTROLLED no 修改为no不依
  • C# Task Cancellation总结

    1 调用cancellationTokenSource Cancel 时 只有在task的函数体内使用token ThrowIfCancellationRequested 方法时才会触发ContinueWith Action
  • Java jdk1.5 新特性讲解

    JDK1 5 可以说是java 最经典的一个版本了 在 jdk1 5 发布时 就因他的改动大 而命令为jdl5 0 为后来 java 的壮大立下了汗马之劳 有网友在面试的时候被问到 jdk新特性 我这里索性就从 jdk1 5的特性说到1 8
  • Android产品研发(十四)-->App升级与更新

    转载请标明出处 一片枫叶的专栏 上一篇文章中我们讲解了Android app中的轮询操作 讲解的内容主要包括 我们在App中使用轮询操作的情景 作用以及实现方式等 一般而言我们使用轮询操作都是通过定时任务的形式请求服务器并更新用户界面 轮询
  • 《2020王道》

    绪论 数据结构基本概念 数据 数据是信息的载体 是描述客观事物属性的数 字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合 数据元素 数据元素是数据的基本单位 通常作为一个整体进行考虑和处理 一个数据元素可有若干个数据项组成