Hello,数据结构

【博主力荐】《Hello 算法》动画图解、一键运行的数据结构与算法教程 无论你是小白还是“大神”,数据结构对于我们码农都是十分重要的,一个内容优质、有趣、便捷的算法学习网站对我们都是至关重要的,Hello算法是具备这些的,本文无商业用途,仅分享,若感兴趣也可以去GitHub star一下作者~ 阅读详情

也许从这以后,慢慢地你们中的一些人会开始把你们崇拜的对象,从帅哥美女、什么“哥”什么“姐”们,转移到这些大胡子或者秃顶的老头身上,那我就非常欣慰了。——《大话数据结构》作者:程杰

什么是数据结构

数据:

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

我的理解:你的姓名、身高、年龄、存款等,就是数据。

数据元素:

是数据的基本单位,通常作为一个整体进行考虑和处理。
一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。

我的理解:就单单“姓名”这一个项目,就是数据元素。

数据对象:

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

我的理解:你所有认识人的单单“姓名”这一个项,就是一个数据对象。

数据类型:

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

数据类型的种类:

  1. 原子类型:其值不可再分的数据类型。
  2. 结构类型:其值可以再分解为若千成分(分量)的数据类型。
  3. 抽象数据类型:抽象数据组织和与之相关的操作。

抽象数据类型:

抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作。
用(数据对象、 数据关系、基本操作集)这样的三元组来表示抽象数据类型。

我的理解:对于你所认识的所有人,对于每个人的年龄,你设计一个函数来求平均值,这就是一种抽象的数据类型。我在初学时,直接把抽象数据类型(Abstract Data Type)看作是一个函数。

数据结构:

这种数据元素相互之间的关系称为结构(structure)。

  • 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
  • 数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。
  • 数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所釆用的存储结构。

我的理解:见识过修房子吧?先由钢筋、混泥土、砖块可以修成无数巧妙绝伦的房舍,这就是一种结构。其中的钢筋、混泥土、砖块就是数据元素;

数据的四大逻辑结构

总共就四种分类:

  1. 线性结构中的数据元素之间只存在一对一的关系。例如,数组、链表、栈、队列。
  2. 集合结构中的数据元素之间除了 “同属于一个集合”的关系外,别无其他关系。例如,你属于你们班。
  3. 树形结构中的数据元素之间存在一对多的关系。例如,你家的家族族谱。
  4. 图状结构中的数据元素之间存在多对多的关系。例如,你从香港到北京,有多重路线,要经过很多地方。

数据的四大存储结构

定义:

数据结构在计算机内存中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。

我的理解:你想保存所有你认识的人的信息,你想通过什么方式保存下来呢?

数据的存储结构主要有:顺序存储、链式存储、索引存储和散列存储。

1) 顺序存储: 把逻辑上相邻的元素存储在物理位置上也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来体现。其优点是可以实现随机存取,每个元素占用最少的存储空间;缺点是只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片。

2) 链接存储: 用指针表示元素之间的逻辑关系。其优点是不会出现碎片现象,充分利用所有存储单元;缺点是每个元素因存储指针而占用额外的存储空间,并且只能实现顺序存取。

3) 索引存储: 在存储元素信息的同时,还建立附加的索引表。索引表中的每一项称为索引项,索引项的一般形式是:(关键字,地址)。其优点是检索速度快;缺点是增加了附加的索引表,会占用较多的存储空间。另外,在增加和删除数据时要修改索引表,因而会花费较多的时间。

4) 散列存储: 根据元素的关键字直接计算出该元素的存储地址,又称为Hash存储。其优点是检索、增加和删除结点的操作都很快;缺点是如果散列函数不好可能出现元素存储单元的冲突,而解决冲突会增加时间和空间开销。

数据的运算

施加在数据上的运算包括运算的定义和实现。

  • 运算的定义是针对逻辑结构的,指出运算的功能;
  • 运算的实现是针对存储结构的,指出运算的具体操作步骤。

我的理解:你想要计算你所认识所有人的平均年龄,又由于你每隔一段时间都会有新的朋友,**于是你写个函数,专门计算平均年龄。**每次你想要知道平均年龄,就执行以下这个函数即可。那么,这个函数,就是一个数据的运算。

《 Hello 算法 》 - 免费开源的数据结构与算法入门教程电子书,包含大量动画、图解,通俗易懂 这本学习算法的电子书应该是我看过这方面最好的书了,代码例子有多种编程语言,JavaScript 也支持。 阅读详情

相关推荐

深入浅出《Hello 算法》:开启数据结构与算法之旅

本文是一篇深入浅出的读后感与总结,针对《Hello 算法》这本书进行了详细的内容解读和自我思考。《Hello 算法》是一本为算法初学者量身打造的入门教程,以通俗易懂的方式介绍数据结构与算法的基本知识。书中采用动画图解和代码实践的方式,让读者能够通过直观和动手实践来学习。文章不仅概括了书籍的结构和内容,还探讨了如何高效地使用本书,并分享了作者在阅读过程中的体会和感悟。

weixin_42600128的博客 415

Hello算法学习之数据结构

它使用 7 位二进制数(即一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的字符。,使用 1 到 4 个字节来表示一个字符,根据字符的复杂性而变。ASCII 字符只需要 1 个字节,拉丁字母和希腊字母需要 2 个字节,常用的中文字符需要 3 个字节,其他的一些生僻字符需要 4 个字节。(所以会产生一个问题,当给计算机8位的编码时,它怎么能知道这是一个2字节的字符,还是两个1字节的字符呢?在庞大的 Unicode 字符集中,常用的字符占用 2 字节,有些生僻的字符占 3 字节甚至 4 字节。

weixin_72100405的博客 1162

PHP版本对接支付宝支付接口 电脑网站 详细介绍 沙箱环境 超简单易懂

PHP版本对接支付宝支付接口 其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,跟我走吧~ 我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试去这一工程的,我去支付宝的蚂蚁金服开放平台里把各个知识点和文档大概都看了一遍,大致弄明白了要怎么操作了,建议大家看看电脑网站开发文档,忙到了夜里十二点左右,成功地用支付宝给的Demo完成了付款操...

爱玲姐姐的博客 1万+

【数据结构】数据结构的基本概念——逻辑结构、存储结构、抽象数据类型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、基本概念和术语? 1.数据 数据是描述客观事物的符号,是计算机可以操作的对象,是能被计算机识别,并输入到计算机处理的符号集合。 (数据不..

Jacky_Feng的博客 3万+

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点

本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。

v5w6x的博客 664

python blp模型 估计_随机系数Logit模型及Stata实现

欢迎投稿(荐稿)计量经济圈,计量相关都行邮箱:econometrics666@sina.cn作者:北京交通大学经济管理学院博士生,王琦珀。欢迎你加入计量经济圈社群,一起探讨前沿计量理论和实证方法。一、随机系数Logit模型1.背景实证产业组织(Empirical Industrial Organization,EIO)是目前产业组织理论的前沿,其中又以Ariel Pakes为带头人,其近期工作论文...

weixin_42298927的博客 2641

零零散散学算法之详解几种数据存储结构

影响空间规模的几种数据存储结构 正文所谓数据存储结构,就是数据的元素与元素之间在计算机中的一种表示,它的目的是为了解决空间规模问题,或者是通过空间规模问题从而间接地解决时间规模问题。我们知道,随着输入的数据量越来越大,在有限的内存里,不能把这些数据完全的存下来,这就对数据存储结构和设计存储的算法提出了更高的要求。 本文将介绍几种存储结构,分别为链式结构、树形结构、图结构以及矩阵结构。第一节 ...

tudusi 899

CAB单片机开发指南

CAB单片机开发使用指南,IDE安装及烧录注意事项

Zoebuxiangtian的博客 1558

数据的逻辑结构和存储结构(物理结构)详解

数据的逻辑结构和存储结构(物理结构)详解什么是数据结构数据的逻辑结构集合线性结构树形结构图形结构数据的物理结构(存储结构)1、顺序存储结构2、链式存储结构3、索引存储结构4、链式存储结构存储结构特点顺序存储结构的特点非顺序存储的特点分类线性结构的特征非线性结构的特征 什么是数据结构 数据结构,直白地理解,就是研究数据的存储方式。这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据

LuckyRascal的博客 9790

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 957

eDP V1.4协议介绍

eDP的全称是Embedded DisplayPort嵌入式显示端口,主要应用与短距离系统内应用,例如手机、一体式台式机等。eDP V1.4b是基于DP V1.3标准制作完成,但因应用场景的不同,还是有很多区别。电压摆幅不同,eDP相对较低;eDP功耗相对较低;DP有线材和连接器的要求,eDP没有明确要求;AUX通道电路设计不同(相对DP取消了AC耦合电容和100KΩ/1MΩ的上下拉电阻):典型应用场景;

qflook的博客 4301

数据结构---概述

数据结构概述;物理结构;逻辑结构;时间复杂度;空间复杂度

qq_63976098的博客 1517

基于STM32L4XX、HAL库的 TMC2660C-PA 驱动程序设计

/ 默认灵敏度和电流。// 20/31最大电流。

zhusl6688的博客 384

Hello 算法:动画图解、一键运行的数据结构与算法教程

《Hello 算法》是一份开源、免费的数据结构与算法入门教程,特别适合新手。全书采用动画图解,内容清晰易懂,学习曲线平滑,引导初学者探索数据结构与算法的知识地图。源代码可以一键运行,帮助读者通过练习提升编程技能,了解算法工作原理和数据结构的底层实现。书中包含500幅动画图解、14种编程语言代码、3000条社区问答,支持Python, Java, C++, C, C#, JS, Go, Swift, Rust, Ruby, Kotlin, TS, Dart等代码,助你快速入门数据结构与算法,简体版和繁体版同步

铭渊老黄 2719

小卫星多普勒频偏MATLAB代码

多普勒频偏是由于发射机和接收机之间的相对运动而引起的频率变化。对于小卫星,由于其速度和高度的变化,多普勒频偏会变得更加明显。本文将探讨小卫星多普勒频偏的原理、影响因素以及补偿方法。多普勒频偏的原理当发射机和接收机之间存在相对运动时,接收到的信号频率会发生变化。这种频率变化称为多普勒频偏。其原理可以描述如下:设发射机和接收机之间的距离为 d,发射信号的频率为 f0,发射机和接收机的相对速度为 v。则接收到的信号频率 f 为:其中 c 为光速。

qq_59747472的博客 244

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

开源免费、新手友好的数据结构与算法入门教程《Hello 算法》

数据结构与算法是计算机科学的基础,是软件工程师必备的知识技能。然而,对于初学者来说,数据结构与算法的学习往往是一件枯燥而困难的事情。近日,开源免费、新手友好的数据结构与算法入门教程《Hello 算法》正式上线。该教程由靳宇栋(Krahets)老师主导,历时两年打造,旨在为初学者提供一个全面、系统、易懂的数据结构与算法学习路径。项目地址:https://github.com/krahets/hell...

前端开发博客 2525

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深入理解Hello-Algo项目中的数据结构与算法

在软件开发领域,数据结构与算法是构建高效、可靠系统的基石。无论你是初学者还是资深开发者,掌握这些核心概念都能显著提升代码质量和解决问题的能力。Hello-Algo项目通过动画图解和多语言实现,为学习者提供了一个直观、系统的学习路径。 ## 数据结构分类体系 ### 逻辑结构:数据关系的本质 数据结构从逻辑上可分为线性结构和非线性结构两大类: ```mermaid mindmap roo...

gitblog_00215的博客 390

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

支持C#的开源免费、新手友好的数据结构与算法入门教程 - Hello算法

前段时间完成了C#经典十大排序算法(完结)然后有很多小伙伴问想要系统化的学习数据结构和算法,不知道该怎么入门,有无好的教程推荐的。今天给大家推荐一个支持C#的开源免费、新手友好的数据结构与算法入门教程:Hello算法。Hello算法一个开源免费、新手友好的数据结构与算法入门教程。全书采用动画图解,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。

专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享。这里聚焦了大量的C#/.NET/.NET Core优质文章、开源项目、实用工具和学习、工作、面试心得。 911

开源项目-对新手极其友好的数据结构与算法入门教程-hello-algo

点击上方“嵌入式应用研究院”,选择“置顶/星标公众号”干货福利,第一时间送达!排版 | 嵌入式应用研究院素材来源|Github开源社区从业多年,大家是否在工作中遇到很多软件逻辑问题难以解决?其实大多数情况下是由于自身的理论知识储备不足,而不是真的不知道如何去解决。算法和数据结构决定一个程序员的高度,不管是从事前后端开发,还是从事嵌入式软件开发,都需要掌握数据结构与算法。笔者最近在Github上发...

Bruce.yang的嵌入式之旅 684

GitHub 汉化完整指南:导入 1 个脚本,3 分钟把界面变中文

想中文阅读 GitHub,又怕浏览器翻译把代码和布局搅乱?github-chinese(GitHub 汉化插件)给出答案:导入一个 Tampermonkey 脚本,界面即刻中文化,全程零配置,不用碰任何选项。 ## 🔍 装上 GitHub 汉化插件后,你会看到什么 打开 GitHub 首页,顶部导航变成"仪表板""置顶仓库";进入仓库页,菜单是"代码、议题、拉取请求",按钮变成"星标""复刻

gitblog_00311的博客 753

深入解析《Hello-Algo》:一本面向初学者的数据结构与算法图解教程

深入解析《Hello-Algo》:一本面向初学者的数据结构与算法图解教程 【免费下载链接】hello-algo 《Hello 算法》:动画图解、一键运行的数据结构与算法教程,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Rust, Dart, Zig 等语言。 ...

gitblog_01025的博客 360

[算法学习笔记] 《Hello算法》第3章 数据结构

本系列为《Hello算法》学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可!常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构”两个维度进行分类。逻辑结构揭示了数据元素之间的逻辑关系:如下图所示,逻辑结构可分为“线性”和“非线性”两大类。线性结构比较直观,指数据在逻辑关系上呈线性排列;非线性结构则相反,呈非线性排列。非线性数据结构可以进一步划分为树形结构和网状结构。当算法程序运行时,正在处理的数据主要存储在内存中。下图展示了一个计算机内存条,其中每个黑色方块

努力学习 971

GitHub Star 64.9k 的数据结构与算法教程《Hello 算法》,出版了!

GitHub 上持续火爆的项目“Hello 算法”,目前 Star 数已经达到 64.9k!并得到了清华大学计算机教授邓俊辉和亚马逊资深首席科学家李沐的赞赏,李沐更是称赞说:“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!”算法教程千千万,它究竟有什么与众不同之处,能够得到各位大牛点赞。01动画图解教程内容友好,如果说图解算法降低了初学者学习算法的门槛,那么动...

图灵教育 388

《Hello 算法》:动画图解、一键运行的数据结构与算法教程

《Hello 算法》:动画图解、一键运行的数据结构与算法教程 去发现同类优质开源项目:https://gitcode.com/ 《Hello 算法》:动画图解、一键运行的数据结构与算法教程,是一份全面的编程学习资源。本资源包含丰富的数据结构与算法知识,通过动画图解的形式,让复杂的概念变得直观易懂。此外,它支持多种编程语言,包括 Java、C++、Python、Go、JS、TS、C#、Swift、R...

gitblog_06721的博客 364

数据结构1《hello 算法》整理

算法复杂度、数据结构分类、数组、链表、列表(动态数组)

qq_59768361的博客 3271
上一篇: 【JDBC】JDBC的基本使用步骤(清晰完美版)
下一篇: 【JDBC】使用DBUtils包来管理JDBC
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值