什么是数据结构?什么是算法

2023-10-28

记得是大一大二的时候学习了数据结构。时间过的好快,现在实现了,现在感觉自己的基础好差很多都不会。欠的帐还是要还的!

什么是数据结构?什么是算法?

呃呃呃呃 哎….不会。

多次参加了MOOC姥姥的数据结构,都没有坚持下来,希望这次可以坚持下来。

引用姥姥的例子:如果给你一堆书你会怎么放?

想怎么放就怎么放,哈哈。

如果书不多,我们一般是一本插着一本的放着。如下图

要是书的规模很大呢?如学校图书馆里面的书如果是按上述一本一本的插入,那么以后需要找书的时候是不是累死人了。如下图

所以答案是看书的规模。


什么是数据结构?

数据是什么?结构是什么?

参考大话数据结构,几个术语的定义

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合

其实就是图书馆中所有的书。

数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。

就是书。

数据项:一个数据元素可以由若干个数据项组成。

其实就是书名、作者、出版社啥的….

class Book {
//书名
private String bookName;
//作者
private String bookAuthor;
//出版社
private String bookPress;
}

其实一个Book对象就是数据元素,bookName、bookAuthor、bookPress就是数据项。

数据对象:是性质相同的数据元素的集合,是数据的子集。

其实就是某一类书。如图下图都是数据结构一类的书

是不是明白了什么是数据?哈哈 还是需要结合例子理解的深入啊。

什么是结构?

逻辑结构、物理结构。

逻辑结构:是指数据对象中数据元素之间的相互关系。包括集合结构、线性结构、树形结构、图形结构。

集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其它关系。

线性结构:线性结构中的数据之间是一对一的关系。

树形结构:树形结构中的数据之间存在一种一对多的层次关系。

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


物理结构:是指数据的逻辑结构在计算机中的存储形式。顺序存储和链式存储。

顺序存储:是把数据元素存放在地址连续的存储单元里。

链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。


什么是数据结构?

Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例合组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。

Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象数据类型Abstract Data Type) 的物理实现。”

大话数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

姥姥:数据结构包括数据对象集以及它们在计算机中的组织方式,即它们的逻辑结构和物理存储结构,同时还包括与数据对象集相关的操作集,以及实现这些操作的最高效的算法。

个人:就是把图书馆中的书转化为一些字符数据存入电脑中,以及对这些数据对象集的操作。如找书,摆放放书等。


什么是算法?

还是图书馆的例子,如果一本一本找累死人,要是有个索引,先找哪一类这样会快很多。如何查找其实就是算法。

算法是解决问题步骤的有限集合,通常用某一种计算机语言进行伪码描述。通常用时间复杂度和空间复杂度来衡量算法的优劣。

算法的五大特征:输入、输出、有穷性、确定性、可行性。

输入:零个或多个输入。

输出:一个或多个输出。

有穷性:有限步骤后在可接受时间内完成。

确定性:每个步骤都有确定含义,无二义性。

可行性:每一步都是可行的。

算法设计要求:正确性、可读性、健壮性、时间效率高和存储低。

正确性:有输入输出,无二义性,有正确答案。

可读性:方便阅读。

健壮性:输入不合法能处理

时间效率高和存储低:时间空间复杂度越低越好。


这就是数据结构和算法。

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

什么是数据结构?什么是算法 的相关文章

  • QT信号槽的5种连接方式Qt::ConnectionType

    参考 QT信号槽的5种连接方式 非常溜 Qt QueuedConnection例子 666 Qt信号槽的五种连接方式 简洁清晰 Qt UniqueConnection 防止重复连接 综合 例子 updatethread h ifndef U
  • Python入门

    一 进制 1 什么是进制 进制就是进位的制度 一种进位的方式 2 常见的进制 二进制 0和1 0 1 十进制 0 9的整数 0 1 2 3 4 5 6 7 8 9 八进制 0 7的整数 用数字0开头 0 1 2 3 4 5 6 7 十六进制

随机推荐

  • ipconfig不是内部或外部命令

    错误背景 windows r 输入cmd dos命令输入ipconfig 出现不是内部或外部命令 解决方案 1 电脑 系统属性 环境变量 找到path 在末尾处 如没有分号就添加c windows system32 确定 windows r
  • Qt5 信号槽连接 函数重载、参数不一致问题

    Qt5中使用以下方式代替Qt4的信号槽连接 在编译时即对连接的函数指针进行检测 提高了安全性 而Qt4的连接方式是基于字符串的 只能在运行时进行检测 在Qt4的connect方法上右键 Refactor gt Convert connect
  • [数据库系统]第7讲 关系模式的优化知识点整理

    第1节 关系模型的好坏 ER模型转换的关系是否就是最优的关系 不一定 关系模型潜在的问题 添加异常 修改异常 删除异常 数据冗余 冗余 当数据的某些部分能由其他部分推导出来 就意味着存在冗余 冗余的存在是因为存在完整性约束 如何解决冗余问题
  • Transformer学习笔记

    The Illustrated Transformer Jay Alammar Visualizing machine learning one concept at a time jalammar github io 上面是图片出处 是否
  • CSS列表与表格

    目录 编辑 HTML 列表和 CSS 列表属性 不同的列表项目标记 实例 图像作为列表项标记 实例 定位列表项标记 实例 删除默认设置 实例 列表 简写属性 实例 设置列表的颜色样式 实例 更多实例 所有 CSS 列表属性 表格边框 实例
  • python PDF转docx库的安装与使用

    python PDF转docx库的安装与使用 下载 使用 三种方法 效果 下载 anaconda中直接通过anaconda prompt下载pdf2docx库 pip install pdf2docx 使用 三种方法 可以直接通过命令行使用
  • SpringMVC基础(5): SpringMVC常用注解

    目录 1 handler method 参数绑定常用注解 2 常用注解 1 PathVariable 2 RequestHeader CookieValue 3 Re Body 5 RequestBody和 RequestParam区别 6
  • 安装部署mysql、redis、minio、nginx

    离线安装部署mysql redis minio nginx jar包启动 系统环境 centos7 9 架构 X86 安装目录 server 记录安装笔记 依赖项在线安装的 下载离线依赖 yum install y nginx downlo
  • 最新升级的STM32CubeIDE属于一站式工具,本文带你体验它的强大

    目录 下载安装 配置生成代码 硬件在线调试 1 写在前面 2 STM32CubeIDE介绍 主要特点 3 STM32CubeIDE下载 4 STM32CubeMX安装 5创建工程并编译 下载安装 配置生成代码 硬件在线调试 1 写在前面 S
  • Vue 如何使用WebSocket与服务器建立链接 持续保持通信

    WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求 链接建立后 客户端和服务器端就可以通过TCP链接直接交互数据 WebSocket链接后可以通过send 方法来向服务器发送数据 并通过onnes
  • 【nodejs课堂】Node.js 创建第一个应用

    在我们创建Node js第一个 hello world 应用前 先了解一下Node js应用由哪几部分组成 1 引入required模块 我们可以使用require指令来载入Node js模块 2 创建服务器 服务器可以监听客户端的请求 类
  • MyEclipse8 GA 下载地址 注册码 优化指南

    官方网站限制大陆IP 可以通过http ajava org 直接下载 下面是winodws linux的下载地址 其他版本请自行去http ajava org 下载 注册码7 5GA 8 0GA貌似通用 但不绝对 window版下载地址 h
  • 语义分割数据增强(Data augmentation for semantic segmentation)

    数据增强 深度学习模型的鲁棒性 robustness 和泛化性受到训练数据的多样性和数据量所影响 数据增强 data augmentation 是机器学习和深度学习中经常采用的一个方法 其目的是扩大训练样本的数量 语义分割是计算机视觉一个重
  • 期货十三篇 第七篇 平仓篇

    在期货交易中曾经流行这样一句话 会开仓的是徒弟 会平仓的是师傅 会空仓的是大师傅 在最初的期货交易过程中 我的开仓还算比较顺利 基本上都可以获得一定的盈利 但是我的平仓却十分糟糕 往往把自己的盈利单变成微利单或者亏损单而狼狈离场 我实在不能
  • 贝锐蒲公英:助力企业打造稳定高效的智能安防监控网络

    随着技术的快速发展和物联网的普及 企业面临着许多安全威胁和风险 如盗窃 入侵 信息泄露等 企业需要建立安防监控系统来保护其资产 员工和业务运营的安全 然而 企业在搭建安防监控系统的过程中 可能会面临一些难点 包括以下几个方面 1 监控设备多
  • sysdig_系统分析工具 Sysdig 详解

    Sysdig 是 Sysdig Cloud 开发的主要基于Lua语言的一个开源系统分析工具 Sysdig 能从运行的系统中 获取系统状态和行为 做过滤分析 功能上超同类开源工具 Sysdig 可以看做是 strace tcpdump lso
  • Java将图片转换成透明底图片

    package com stefan test import java awt Graphics2D import java awt Image import java awt image BufferedImage import java
  • android黑科技系列——手机端破解神器MT的内购VIP功能破解教程

    一 前言 在破解app的时候 我们现在几乎都是在PC端进行操作 但是之前bin神的MT管理器 可以在手机端直接破解 不过也有很大的局限性 但是对于一些简单的app破解没问题的 这个工具其实原理也很简单 就是解析apk中的dex arsc等文
  • 宝兰德BES中间件单机版安全加固相关操作

    因某公司对安全的要求 需要对bes中间件进行安全加固 安全加固的内容主要包括对控制台默认地址修改 实例默认端口修改 控制台默认密码修改 密码加密 加密后的实例启停方式等 首先说一下今天安全加固操作的前提 需要已经分离式部署安装成功bes单机
  • 什么是数据结构?什么是算法

    记得是大一大二的时候学习了数据结构 时间过的好快 现在实现了 现在感觉自己的基础好差很多都不会 欠的帐还是要还的 什么是数据结构 什么是算法 呃呃呃呃 哎 不会 多次参加了MOOC姥姥的数据结构 都没有坚持下来 希望这次可以坚持下来 引用姥