
数据结构
文章平均质量分 91
初晴~
悟已往之不谏,知来者之可追
展开
-
【数据结构】Map与Set
一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对,所以模型会有两种:1. 纯 key 模型,比如:有一个英文词典,快速查找一个单词是否在词典中快速查找某个名字在不在通讯录中2. Key-Value 模型,比如:统计文件中每个单词出现的次数,统计结果是每个单词都有与其对应的次数:梁山好汉的江湖绰号:每个好汉都有自己的江湖绰号而Map中存储的就是key-value的键值对,Set中只存储了Key原创 2024-08-09 10:53:15 · 1267 阅读 · 16 评论 -
【数据结构】哈希表
虽然哈希表一直在和冲突做斗争,但在实际使用过程中,我们认为哈希表的冲突率是不高的,冲突个数是可控的,也就是每个桶中的链表的长度是一个常数,所以,通常意义下,我们认为哈希表的插入删除查找时间复杂度是O(1)。因此,在频繁查找的场景中哈希表的效率是相当高的。作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊。原创 2024-08-08 18:39:13 · 692 阅读 · 11 评论 -
【数据结构】二叉搜索树binarySearchTree
二叉搜索树的优点很明显,就是在查找元素时的速度能够达到,可以说查找效率非常之高了。但其也存在着缺点,就是在构成单支树是效率会递减至O(n),也就是说它的查找效率是不稳定的。为了弥补这一缺陷,努力让树的层数尽可能少,分布尽可能均衡是提升二叉树效率的关键,也就有了后来的AVL树和红黑树,不过他们的基础都是二叉搜索树,所以一定要先好好理解二叉搜索树的原理。原创 2024-08-07 15:09:11 · 860 阅读 · 7 评论 -
【数据结构】优先级队列PriorityQueue
前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;初中那会班主任排座位时可能会让成绩好的同学先挑座位。在这种情况下,数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。原创 2024-07-25 09:04:25 · 913 阅读 · 10 评论 -
【数据结构】二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中每一个集合Ti (1原创 2024-07-16 14:54:23 · 1226 阅读 · 26 评论 -
【数据结构】队列的补充与扩展
本篇文章主要就是对上篇文章的补充说明,拓宽一下队列的应用方式与应用场景。了解循环队列与双端队列的工作原理与应用方式即可作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊。原创 2024-07-13 22:25:57 · 559 阅读 · 6 评论 -
【数据结构】栈与队列
栈和队列本质上就是两种存放与读取方式不同的线性表,栈的主要特点是先进后出,队列则是先进先出,我们可以根据实际应用场景来选择适合的结构。还是那句话,没有最好的数据结构,只有最适合的数据结构。作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊。原创 2024-07-13 21:37:51 · 1705 阅读 · 7 评论 -
【数据结构】链表与LinkedList
概念:链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。注意: 链式结构是在逻辑上连续,但在物理上不一定连续。实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:1.单向或者双向2.带头或者不带头3.循环或者非循环虽然有这么多的链表的结构,但是我们重点掌握两种无头单向非循环链表结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如 哈希桶、图的邻接表等等。无头双向链表:在Java的集合框架库中LinkedList。原创 2024-05-17 21:19:35 · 2110 阅读 · 32 评论 -
算法的时间复杂度与空间复杂度
一段程序的优劣主要就由时间复杂度与空间复杂度决定,而这两者一般是很难兼得的,所以我们应该根据实际需求对代码进行调整,没有最好的代码,只有最合适的代码作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊。原创 2024-03-26 20:09:08 · 880 阅读 · 20 评论 -
【数据结构】顺序表与ArrayList
顺序表的优点:适合下标查找和更新的场景缺点:1、不方便进行插入和删除操作,因为要移动数组元素,最坏情况下时间复杂度会达到O(n)2、扩容可能会浪费空间,例如长度为100的顺序表放满了,这时插入1个元素,顺序表就会扩容1.5倍,即多50个位置但实际只存储了1个元素,造成空间浪费原创 2024-05-07 21:03:33 · 1328 阅读 · 30 评论