JAVA整理学习实例(四)数据结构

JAVA整理学习实例(四)数据结构

注:不积跬步,无以至千里,学习之路,任重而道远。很多技术,学着学着就回到了理论上。基础知识很差,博客写起来很难。。。写的不对的和不好的,希望不会误导老铁们,有错误的可以直接指出来。

前言

数据结构是计算机存储、组织数据的方式。是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,选择合适的数据结构可以带来更高的运行或者存储效率。

数据结构可以划分为逻辑结构和存储结构。

一、存储结构

数据的存储结构是指数据的逻辑结构在计算机中的表示。

也称为数据的物理结构,是数据的逻辑结构在计算机中的实现。

存储结构分四类:顺序存储、链式存储、索引存储和散列存储。

1.顺序存储

顺序存储方式是指将所有的数据元素放在一段连续的存储空间中,并使逻辑上相邻的数据元素其对应的物理存储位置也是相邻的(即保证逻辑位置关系与物理位置关系的一致)。顺序存储结构通常借助程序设计语言中的数组来加以实现。

在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。

特点:

1、随机存取表中元素(直接通过首个数据元素地址计算需要查找的元素的内存地址,因此访问特定元素效率很高)。

2、数据存储密度大(实际使用中,当有大量数据时,分配一块连续的大内存空间会比较难)。

3、插入和删除效率低;因为要保持数据连续,在操作数据后,需要移动元素以保持连续性。

2、链式存储

在计算机中,链式存储结构不要求逻辑上相邻的结点在物理位置上亦相邻,链式存储结构是借助数据元素之间的元素的指针表示数组元素的逻辑结构。

特点:

1、每个结点是由数据域和指针域组成。

2、结点之间是逻辑上相邻,而物理存储上不需要相邻(随机存储,由指针指向数据结点)。

3.数据存储密度小;小于顺序存储(由第2点可知;在同样大小的空间内,存储数据的话,链式存储占用内存更大,因此存储的数据量就少)。

4、插入、删除效率高;因为不需要移动数据,只需要改动数据结点指针。

5、查找数据结点时,链式存储要比顺序存储慢,因为是线性结构,所以查找数据需要遍历结点。

3、索引存储(顺序存储+索引

存储方式是,分别存放数据元素和元素间关系的存储方式。

即建立存储结点信息外,还建立附加的索引表来标识结点的地址,索引表由若干索引项组成。

特点:

1.增加了索引的存储,所以会占用更大的空间。

2.查询速度快。(为什么快? 有序?索引的逻辑结构?)

3.存储速度变慢,以为要增加了索引的写入。

另外,这个索引只有数据库中使用的多吗,好像很少看到其他应用场景。

4、散列存储(顺序存储+散列计算

散列存储,又称hash存储,是一种力图将数据元素的存储位置与关键码之间建立确定对应关系的查找技术。

即建立存储结点信息外,还建立附加的索引表来标识结点的地址,索引表由若干索引项组成。

特点:

1.通过计算获得存储地址,所以能够快速实现数据的访问。

2.hash算法冲突会影响效率。需要额外的方式解决hash冲突(拉链法,开放寻址法,再hash法等等)

二、 逻辑结构

指反映数据元素之间的逻辑关系的数据结构。逻辑关系是指数据元素之间的前后间关系,而与他们在计算机中的存储位置无关

逻辑结构包括(百度,数据结构)

1、集合结构:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;

2、线性结构:数据结构中的元素存在一对一的相互关系;是一个有序数据元素的集合。

1.线性结构是非空集。

2.集合中必存在唯一的一个"第一个元素";

3.集合中必存在唯一的一个"最后的元素";

4.线性结构有且仅有一个开始结点和一个终端结点。

5.线性结构所有结点都最多只有一个直接前驱结点和一个直接后继结点。线性表就是典型的线性结构。

常用的线性结构有:线性表,栈,队列,双队列,串(一维数组)。

常见的非线性结构有:多维数组(二维及以上),广义表,树(二叉树等),图。

3、树形结构:数据结构中的元素存在一对多的相互关系;

4、图形结构:数据结构中的元素存在多对多的相互关系。

数据结构有很多种,一般来说,按照数据的逻辑结构对其进行简单的分类,包括线性结构和非线性结构两类

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

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

相关文章

lenovo联想笔记本ThinkPad P1 Gen5/X1 Extreme Gen5原装出厂Windows11预装OEM系统

链接:https://pan.baidu.com/s/13E97Nwc-0-N7ffPjEeeeOw?pwdep4l 提取码:ep41 原装出厂系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具:32G或以上的U盘 文件格式:ISO 文件大小&#xff…

Java实现俄罗斯方块游戏

俄罗斯方块游戏本身的逻辑: 俄罗斯方块游戏的逻辑是比较简单的。它就类似于堆砌房子一样,各种各样的方地形状是不同的。但是,俄罗斯方块游戏的界面被等均的分为若干行和若干列,因此方块的本质就是占用了多少个单元。 首先来考虑…

解决 Python requests 库中 SSL 错误转换为 Timeouts 问题

解决 Python requests 库中 SSL 错误转换为 Timeouts 问题:理解和处理 SSL 错误的关键 在使用Python的requests库进行HTTPS请求时,可能会遇到SSL错误,这些错误包括但不限于证书不匹配、SSL层出现问题等。如果在requests库中设置verifyFalse&…

struct结构体【C#】

结构体: C#中的结构体很少用,一般用class 结构体是值类型传递。 public unsafe struct VCI_CAN_OBJ //CAN每帧对象, { public uint ID;// 帧ID。 【u32】帧id,数据格式为靠右对齐。 详情请参照: 《…

《向量数据库指南》——Range Search 使用方法和参数检查

Range Search 使用方法 如需使用 Range Search,只需要修改搜索请求中的搜索参数。接下来我会讲一下的详细使用指南,在指南的最后还提供了 Python 示例代码。 开始前 请确保已安装并运行 Milvus Cloud。请确保已创建 1 个 Collection,并为该 Collection 创建索引。 Ra…

【LeetCode:2216. 美化数组的最少删除数 | 贪心】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

掌握源码,轻松搭建:一站式建站系统源码 附完整搭建步骤与教程

随着互联网的快速发展,网站已成为人们生活中不可或缺的一部分。然而,对于许多初学者或中小企业来说,搭建一个完整的网站系统并非易事。这涉及到前端和后端的开发、数据库管理等多个环节。为了解决这一痛点,我们推出了一站式建站系…

sortablejs拖拽后新增和删除行时顺序错乱

问题描述:如下图所示,使用sortablejs拖拽后,在序号2后新增行会出现新增行跑到第一行的错误顺序。 解决:在进行拖拽后,对表格数据进行清空重新赋值。

android实时投屏软件QtScrcpy

QtScrcpy 可以通过 USB / 网络连接Android设备,并进行显示和控制。无需root权限。 同时支持 GNU/Linux ,Windows 和 MacOS 三大主流桌面平台。 QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制…

Linux 漏洞处理

远程主机会回复ICMP_TIMESTAMP查询并返回它们系统的当前时间,这可能允许攻击者攻击一些基于时间认证的协议 Linux系统编辑etc/sysconfig/iptables文件,在防火墙规则里面添加如下记录:-A RH-Firewall-1-INPUT -p ICMP --icmp-type timestamp-…

一种可度量的测试体系-精准测试

行业现状 软件行业长期存在一个痛点,即测试效果无法度量。通常依赖于测试人员的能力和经验,测试结果往往不可控,极端情况下同一个业务功能,即使是同一个人员在不同的时间段,测试场景和过程也可能不一致,从而…

抖音电商双11官方数据最全汇总!

11月13日,抖音电商数据发布“抖音商城双11好物节”数据报告,展现双11期间平台全域经营情况及大众消费趋势。 报告显示,10月20日至11月11日,抖音电商里的直播间累计直播时长达到5827万小时,挂购物车的短视频播放了1697亿…

第十一篇 基于JSP 技术的网上购书系统——产品类别管理、评论/留言管理、注册用户管理、新闻管理功能实现(网上商城、仿淘宝、当当、亚马逊)

目录 1.产品类别管理 1.1功能说明 1.2界面设计 1.3处理流程 1.4数据来源和算法 1.4.1数据来源 1.4.2 查询条件 1.4.3相关sql实例 2. 评论/留言管理 2.1功能说明 2.2 界面设计 2.3处理流程 2.4数据来源和算法 2.4.1数据来源 2.4.2 查询条件 2.4.3相关sql实例…

vue3 使用simplebar【滚动条】

1.下载simplebar-vue npm install simplebar-vue --save2.引入注册 import simplebar from "simplebar-vue"; import simplebar-vue/dist/simplebar.min.css import simplebar-vue/dist/simplebar-vue.jsvue2的版本基础上 【引入注册】 import simplebar from &qu…

IDEA 搭建 SpringCloud 项目【超详细步骤】

文章目录 一、前言二、项目搭建1. 数据库准备2. 创建父工程3. 创建注册中心4. 服务注册5. 编写业务代码6. 服务拉取 一、前言 所谓微服务,就是要把整个业务模块拆分成多个各司其职的小模块,做到单一职责原则,不会重复开发相同的业务代码&…

Pyinstaller 打包程序 python-oracledb 报错 DPY-3016问题解决方案

执行xxx.exe文件调用oracledb 时报错 DPY-3016:python-oracledb thin mode cannot be used because the cryptography package is not installed 原因是其隐式调用了cryptography ,打包时加入参数 –hidden-importcryptography.hazmat.primitives.kdf.pbkdf2解决 p…

什么是调试和性能分析工具?

调试和性能分析工具是软件开发过程中的关键工具,它们用于诊断、修复错误(bug)以及优化程序性能。这两类工具在不同阶段发挥关键作用: 调试工具: 定义: 调试是指在程序开发过程中,通过运行程序…

解码算力需求:迎接AIGC时代的数据中心革命

随着人工智能(AI)和大规模计算(GC)的蓬勃发展,数据中心正迎来一场前所未有的革命。在这个被称为AIGC时代的新时代,解码算力需求成为推动创新、驱动技术进步的关键因素。本文将深入探讨AIGC时代数据中心的挑…

常用的数据库类别及介绍

常用的数据库有以下几种: 1.关系型数据库(RDBMS): MySQL MySQL是一种开源的关系型数据库管理系统,广泛用于Web应用程序开发。它是由瑞典公司MySQL AB开发的,后来被Oracle收购。MySQL具有高性能、可靠性和…