数据结构严蔚敏版精简版-绪论

1.基本概念和术语

下列概念和术语将在以后各章节中多次出现,本节先对这些概念和术语赋予确定的含义。

数据(Data):数据是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号 的总称。

数据元素(DataElement):数据元素是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。 在有些情况下,数据元素也称为元素、记录等。

数据项(DataItem):数据项是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生 基本信息表中的学号、姓名、性别等都是数据项。

数据对象(DataObject):数据对象是性质相同的数据元素的集合,是数据的一个子集。

2.数据结构

数据结构 (Data Structure) 是相互之间存在一种或多种特定关系的数据元素的集合。

数据结构包括逻辑结构和存储结构两个层次。

2.1数据的逻辑结构

从逻辑关系上描述数据,它与数据的存储无关,是独立千计算机的

通常有四类基本结构,从逻辑结构上分为线性和非线性

逻辑结构可以用一个层次图描述

2.2数据的存储结构

数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。数据元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。

四大存储结构:顺序存储结构、链接存储结构、索引存储结构和散列存储结构

举例:如链、哈希(散列)、顺序、索引等关键字的一般是存储结构。

3.算法评估

算法 (Algorithm) 是为了解决某类问题而规定的一个有限长的操作序列。

3.1算法五个重要特性

(1)有穷性。一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。

(2) 确定性。对千每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性, 使算法的执行者或阅读者都能明确其含义及如何执行。

(3) 可行性。算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。

(4) 输入。一个算法有零个或多个输入

(5) 输出。一个算法有一个或多个输出,无输出的 算法没有任何意义。

3.2评价算法优劣的基本标准

一个算法的优劣应该从以下几方面来评价。

(1)正确性。在合理的数据输入下,能够在有限的运行时间内得到正确的结果。

(2)可读性。一个好的算法,首先应便千人们理解和相互交流, 其次才是机器可执行性。可 读性强的算法有助于人们对算法的理解,而难懂的算法易千隐藏错误,且难千调试和修改。

(3)健壮性。当输入的数据非法时,好的算法能适当地做出正确反应或进行相应处理,而不 会产生一些莫名其妙的输出结果。

(4)高效性。高效性包括时间和空间两个方面。时间 可以用时间复杂度来度量;空间可以用空间复杂度来度量。时间复杂度和空间复杂度是衡量算法的两个主要指标。

通常只讨论算法在最坏情况下的时间复杂度,即分析在最坏情况下,算法执行时间的上界。

若算法执行时所需要的辅助空间相对千输入数据量而言是个常数,则称这个算法为原地工作,辅助 空间为0(1),

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/338987.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM运行时数据区 - 程序计数器

运行时数据区 Java虚拟机在执行Java程序的过程中,会把它管理的内存划分成若干个不同的区域,这些区域有各自的用途、创建及销毁时间,有些区域随着虚拟机的启动一直存在,有些区域则随着用户线程的启动和结束而建立和销毁&#xff0…

JAVAEE1

Web前端: 1.建立web开发的息维模式写代码不仅仅是为了实现某个功能,更是学习解决问题的思维方式 2.先使用,再理解,会导致刚开始比较懵,不知其所以然.切忌不可深陷其中, 3.涉及简单的软件工程的设计思想&…

Java Agent利器

一、JavaAgent技术 1.1 什么是JavaAgent JavaAgent是一种特殊的Java程序,是Instrumentation的客户端。它与普通Java程序通过main方法启动不同,JavaAgent并不是一个可以单独启动的程序,它必须依附在一个Java应用程序(JVM&#xf…

Spring创建对象的多种方式

一、对象分类 简单对象:使用new Obj()方式创建的对象 复杂对象:无法使用new Obj()方式创建的对象。例如: 1. AOP创建代理对象。ProxyFactoryBean; 2. Mybatis中的SqlSessionFactoryBean; 3. Hibernate中的SessionFactoryBean。二、创建对象方…

Docker学习笔记 - 创建自己的image

目录 基本概念常用命令使用docker compose启动脚本创建自己的image 使用Docker是现在最为流行的软件发布方式, 本系列将阐述Docker的基本概念,常用命令,启动脚本和如何生产自己的docker image。 在我们发布软件时,往往需要把我…

Visual Studio Installer 点击闪退

Visual Studio Installer 点击闪退问题 1. 问题描述2. 错误类型3. 解决方法4. 结果5. 说明6. 参考 1. 问题描述 重装了系统后(系统版本:如下图所示),我从官方网站(https://visualstudio.microsoft.com/ ) 下载了安装程…

OpenAI 推出ChatGPT Edu,为高校定制版本

近日,OpenAI 宣布推出 ChatGPT Edu,这是一款专为高校打造的 ChatGPT 版本,旨在帮助学生、教师、研究人员和校园运营部门以负责任的方式部署和使用 AI。 ChatGPT Edu 由 GPT-4o 提供支持,具备强大的文本和图像推理能力,…

FS212E 系列PD协议

PD快充协议芯片FS212EL、FS212EH可以智能的识别插入的手机类型,选择最为合适的协议应对手机快充需要。兼容多类USB Type-C协议,包括TypeC协议、TypeC PD2.0、TypeC PD3.0、TypeC PD3.2等协议。集成OPTO输出,通过电阻直驱反馈光耦。FS212E 的调…

hexo init命令报错:Error: EPERM: operation not permitted, mkdir ‘D:\‘

我用的是git bash通过hexo init安装hexo的,但是报错如下: $ hexo init INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git fatal: unable to access https://github.com/hexojs/hexo-starter.git/: HTTP/2 stream 1 was not clos…

Firebase Local Emulator Suite详解

文章目录 Firebase Local Emulator Suite 组件安装和使用步骤1. 安装 Firebase CLI2. 初始化 Firebase 项目3. 配置模拟器4. 启动模拟器5. 配置应用程序使用本地模拟器 常见用途 Firebase Local Emulator Suite 是一组本地服务,可以模拟 Firebase 平台的在线服务&am…

以sqlilabs靶场为例,讲解SQL注入攻击原理【25-31关】

【Less-25】 首先分析源码 发现把 SQL语句中的 or、and 替换成了空格,这就导致无法使用之前的sql注入方式。 解决方案:用 && 代替 and , 用 || 代替 or , 而且&在url中有特殊含义,如果直接使用会有问题&a…

如何在镜像中安装固定版本的node和npm

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、使用 Dockerfile 创建自定义镜像二、如何安装固定版本的node及npm总结 前言 最近在做前端工程化相关的内容,需要在一个镜像内安装固定版本的 N…

redis 高可用及哨兵模式 @by_TWJ

目录 1. 高可用2. redis 哨兵模式3. 图文的方式让我们读懂这几个算法3.1. Raft算法 - 图文3.2. Paxos算法 - 图文3.3. 区别: 1. 高可用 在 Redis 中,实现 高可用 的技术主要包括 持久化、复制、哨兵 和 集群,下面简单说明它们的作用&#xf…

Linux共享内存创建和删除

最近项目中使用到了共享内存记录下 创建共享内存: 删除共享内存: 代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/mman.h> #include <sys/stat.h> #include <u…

计算机视觉与模式识别实验1-3 图像滤波

文章目录 &#x1f9e1;&#x1f9e1;实验流程&#x1f9e1;&#x1f9e1;1. 对图像加入椒盐噪声&#xff0c;并用均值滤波进行过滤2.对图像加入高斯噪声&#xff0c;并用高斯滤波进行过滤3.对图像加入任意噪声&#xff0c;并用中值滤波进行过滤4.读入一张灰度图像&#xff0c;…

【前端开发--css学习笔记】CSS超详细的学习笔记。前端开发css学习笔记(非常详细,适合小白入门)

二&#xff0c;CSS学习笔记 1&#xff0c;CSS语法 1-1 CSS 实例 CSS声明总是以分号 ; 结束&#xff0c;声明总以大括号 {} 括起来: <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title…

非对称密钥:应用场景

public class EncryptionAndSignatureExample { public static void main(String[] args) throws Exception {// 生成公私钥对KeyPairGenerator keyPairGenerator KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(1024);KeyPair keyPair keyPai…

TiDB-从0到1-部署篇

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇 一、TiUP TiUP是TiDB4.0版本引入的集群运维工具&#xff0c;通过TiUP可以进行TiDB的日常运维工作&#xff0c;包括部署、启动、关闭、销毁、弹性扩缩容…

Python PyInstaller打包方法介绍

为了将开发好的Python工具交付给其他人使用&#xff0c;除了在目标电脑部署Python编译环境以外&#xff0c;我们还可以将它打包成可执行文件&#xff0c;这样目标电脑不需要安装Python环境就可以运行。将Python程序打包成可执行文件的方法有多种&#xff0c;比如Nuitka、PyInst…

AI去衣技术中的几何着色:揭秘数字时尚的魔法

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变我们的生活&#xff0c;从智能家居到自动驾驶汽车&#xff0c;再到个性化医疗。然而&#xff0c;AI的影响远不止于此。它正在重塑我们对艺术、设计和时尚的理解。特别是在数字时尚领域&#…