数据结构 - 全貌总结

news2024/11/28 0:33:57

目录

一. 前言

二. 分类

三. 常见的线性和非线性结构


一. 前言

    数据结构是计算机存储、组织数据的方式。一种好的数据结构可以带来更高的运行或者存储效率。数据在内存中是呈线性排列的,但是我们可以使用指针等道具,构造出类似“树形”等复杂结构。

    数据结构主要分为逻辑结构物理结构(存储结构)和运算三类。逻辑结构主要包含线性结构(如数组、队列、栈等)和非线性结构(如树、二叉树、堆等);物理结构包括顺序存储、链式存储、索引存储和散列存储;运算包括插入、删除、查找、排序等。

二. 分类

数组的下标寻址十分迅速,但计算机的内存是有限的,故数组的长度也是有限的,实际应用当中的数据往往十分庞大;而且无序数组的查找最坏情况需要遍历整个数组;后来人们提出了二分查找,二分查找要求数组的构造一定有序,二分法查找解决了普通数组查找复杂度过高的问题。任何一种数组无法解决的问题就是插入、删除操作比较复杂,因此,在一个增删查改比较频繁的数据结构中,数组不会被优先考虑。

普通链表由于它的结构特点被证明根本不适合进行查找。

哈希表是数组和链表的折中,同时它的设计依赖散列函数的设计,数组不能无限长、链表也不适合查找,所以也不适合大规模的查找。

二叉查找树因为可能退化成链表,同样不适合进行查找。

AVL树是为了解决可能退化成链表问题,但是AVL树的旋转过程非常麻烦,因此插入和删除很慢,也就是构建AVL树比较麻烦。

红黑树是平衡二叉树和AVL树的折中,因此是比较合适的。集合类中的Map、关联数组具有较高的查询效率,它们的底层实现就是红黑树。

多路查找树 是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下。

B树与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。它的应用是文件系统及部分非关系型数据库索引。

B+树在B树基础上,为叶子结点增加链表指针(B树+叶子有序链表),所有关键字都在叶子结点 中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中。通常用于关系型数据库(如Mysql)和操作系统的文件系统中。

B*树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针, 在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3。

R树是用来做空间数据存储的树状数据结构。例如给地理位置,矩形和多边形这类多维数据建立索引。

Trie树是自然语言处理中最常用的数据结构,很多字符串处理任务都会用到。Trie树本身是一种有限状态自动机,还有很多变体。什么模式匹配、正则表达式,都与这有关。

三. 常见的线性和非线性结构

    数据结构中的逻辑结构分为线性和非线性两大类,主要有八大种,比如线性数据结构的就有 数组、链表、栈、队列。非线性的数据结构就有 树、堆、散列表、图等等。

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

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

相关文章

多功能博客模板B2 PRO – v4.2.6 免授权修复版wordpress主题

多功能资源下载模板B2 PRO – v4.2.6 免授权修复版wordpress主题,b2主题是一款多功能的wordpress主题。可以布置成资讯站,下载站,社交站,购物站等不同形式的站点,也可以启用所有这些功能做成一个综合性的站点。 4.16更…

如何在搜索引擎中应用AI大语言模型,提高企业生产力?

人工智能尤其是大型语言模型的应用,重塑了我们与信息交互的方式,也为企业带来了重大的变革。将基于大模型的检索增强生成(RAG)集成到业务实践中,不仅是一种趋势,更是一种必要。它有助于实现数据驱动型决策&…

预处理、编译、汇编、链接

1.预处理 宏替换去注释引入头文件 2.编译 3.汇编 4.链接 gcc 基于C/C的编译器 补充说明 gcc命令 使用GNU推出的基于C/C的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用…

【C++初阶(四)aoto关键字与基于范围的for循环】

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 失物招领小程序 设计与实现

一.项目介绍 失物招领小程序 用户登录、忘记密码、退出系统 发布失物 和 发布招领 查看我发布的失物和招领信息 失捡物品模块可以查看和搜索所有用户发布的信息。 二.环境需要 1.运行环境:java jdk1.8 2.ide环境:IDEA、Eclipse、Myeclipse都可以&#…

【系统集成项目管理工程师】——3.管理

主要掌握输入,输出内容先看他的过程域本身,过程域是什么输出就是什么 上一个过程域的输出是下一个过程域的输入 十大管理1432都有计划过程组,通常规划为首,控制为尾 规划阶段的万能输出是各子计划,即项目管理计划的…

新闻稿的写作注意事项!纯干货

新闻稿是企业、机构、政府等组织向公众传递信息的重要途径之一,也是媒体获取新闻素材的主要来源。一篇优质的新聞稿不仅可以吸引读者的注意力,还可以提高组织的形象和声誉。因此写好新闻稿至关重要。下面伯乐网络传媒来给大家探讨一些新闻稿写作的注意事…

Ceph-deploy跳过gpg-key验证(离线环境安装Ceph)

问题 CentOS-7.6.1810离线环境搭建Ceph环境时出现gpg-key安装源公钥检查错误。原因是执行ceph-deploy install 命令的服务器无法访问互联网。具体报错如下图: 解决 安装命令后新增--no-adjust-repos参数即可跳过安装 GPG 密钥。 命令如下: ceph-deplo…

Linux系统下一些配置建议整理

1. 【推荐】高并发服务器建议调小 TCP 协议的 time_wait 超时时间。 说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服 务器端会因为处于 time_wait 的连接数太多,可能无法建立新的…

没网络也能安装.Net 3.5!如何脱机安装.NET Framework 3.5

.NET框架是由微软制定的一个软件框架。它有助于在Windows上运行控制台、Web或移动应用程序。此有用的工具适用于Windows设备。 如何脱机安装.NET Framework 3.5 如果你拥有Windows 10、8、8.1或7,有时第三方软件可能会导致问题。你可能会在图片中看到这样的问题。 看这张照片…

Java——》4种引用:强软弱虚

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

Flume从入门到精通一站式学习笔记

文章目录 什么是FlumeFlume的特性Flume高级应用场景Flume的三大核心组件Source:数据源channelsink Flume安装部署Flume的使用案例:采集文件内容上传至HDFS案例:采集网站日志上传至HDFS 各种自定义组件例如:自定义source例如&#…

什么洗地机好?洗地机品牌排行榜

近年来,比较热门的家具清洁工具非洗地机莫属了,其中缘由莫过于洗地机集合了扫地、洗地、吸尘等功能,可以同时处理干湿垃圾,可以轻松应对顽固污渍,是非常高效又省力的清洁工具,那么面对雨后春笋般的洗地机市…

centos7安装nginx-阿里云服务器

1.背景 2.准备工作步骤 2.1.安装gcc 阿里云服务器一般默认是安装了的 检查是否已安装 gcc -v 出现如下信息表示已安装: 如果没有安装,执行 yum -y install gcc 2.2.安装pcre,pcre-devel yum install -y pcre pcre-devel 2.3.安装zlib yum install -y zlib zlib-devel…

使用WMS仓储管理系统防止呆料的几个建议

随着互联网的深入,客户的需求变化迅速,从淘宝、京东到直播带货,产品的更新迭代速度越来越快。对于制造企业而言,如何在这样的环境中降低呆腐物料,提高利润,是其生存和发展的关键。 面对快速迭代的产品&…

通过GFlags工具来复现因为野指针、内存越界等造成的程序崩溃

系列文章目录 C程序异常调查专栏 文章目录 系列文章目录前言一、GFlags是什么?二、如何获取GFlags三、使用步骤1.确认GFlags是否已经安装2.以管理员权限启动Command prompt3.GFlags有效设定4.检查GFlags有效设定是否成功5.根据客户复现步骤运行程序 总结 前言 客户…

MQTT协议基础学习

MQTT是什么 MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。 MQTT基本原理 MQTT服务端 MQTT服务端通常是一台服务器,可对MQTT信息的接收、储存、处理和发送。负责将MQTT客户端发送来的信息传递给其他MQTT客户端(需要客户端订阅&#xff…

骨传导蓝牙耳机哪款好?这五款高品质骨传导耳机不可错过!

随着耳机的使用频率增加,骨传导耳机也走进了越来越多人的视野里,而传统的入耳式耳机,常常以使用场景少、佩戴会疼痛、容易引发耳部疾病等原因逐渐被骨传导耳机所替代,所以现在有越来越多的人去选择骨传导耳机,但要注意…

【Leetcode】349. 两个数组的交集

题意 给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 思路 这道题目,主要要学会使用一种哈希数据结构:unordered_set,这个数据结构可以解决…

供应链云仓系统:实现采购、销售、收银、路线规划一体化,高效协同,再创商业价值!

供应链云仓系统是一款集合采购、销售、收银、路线规划等多项功能的软件系统,旨在帮助企业实现业务流程的全面自动化和协同化。通过该系统,企业可以轻松管理供应链的各个环节,提高运营效率,降低成本,实现商业价值的最大…