数据结构
文章平均质量分 96
AUGENSTERN_
一重山有一重山的错落,我有我的平仄
一笔锋有一笔锋的着墨,我有我的舍得
展开
-
数据结构 之 Map & Set
Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的 搜索方式有:直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢二分查找,时间复杂度为,但搜索前必须要求序列是有序的上述排序比较适合静态类型的查找,即一般不会对区间进行插入和删除操作了,而现实中的查找比如:根据姓名查询考试成绩通讯录,即根据姓名查询联系方式不重复集合,即需要先搜索关键字是否已经在集合中可能在查找时进行一些插入和删除的操作,即动态查找,那上述两种方式就不太适合了,本原创 2024-05-18 16:12:59 · 1008 阅读 · 3 评论 -
数据结构 之 哈希表
哈希表(Hash table) 又称为散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做哈希表。原创 2024-04-22 18:46:19 · 1090 阅读 · 27 评论 -
数据结构 之 优先级队列(堆) (PriorityQueue)
在我们之前的队列的文章中介绍过,队列是一种先进先出的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;初中那会班主任排座位时可能会让成绩好的同学先挑座位。原创 2024-03-16 13:23:45 · 1208 阅读 · 37 评论 -
数据结构 之 二叉树
一颗二叉树是节点的有限集合,该集合:< 1 >或者为空;< 2 >或者是由一个根节点加上最多两棵分别称为左子树和右子树的二叉树组成。(左右子树可为空)从上图可以看出:< 1 >二叉树不存在度大于2的节点;< 2 >二叉树的子树有左右子树之分,次序不能颠倒,所以二叉树是有序树;原创 2024-03-13 20:45:52 · 1271 阅读 · 40 评论 -
数据结构 之 树
树是一种非线性的数据结构,,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的;它具有以下的特点:< 1 >他有一个特殊的节点,称为根节点,根节点没有前驱节点;< 2 >除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中每一个集合Ti (1原创 2024-03-13 10:42:55 · 1002 阅读 · 4 评论 -
数据结构 之 队列(Queue)
队列和栈类似,是一种只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表;进入队列的一端称为队尾,离开队列的一端称为队头;队列这个结构遵循先进先出的原则;在日常生活中,例如:多人在网上对老师提交任务时,会将我们所提交的任务存放到一个队列中,然后队列将这些任务按照先进先出的顺序进行出队和入队的操作,老师看到的任务,也就会按照提交时间的先后来排序;由上图可以看出Queue是一个接口,底层是由链表(LinkedList)实现的;原创 2024-03-11 11:57:18 · 1123 阅读 · 4 评论 -
数据结构 之 栈(Stack)
栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作;进行栈这个数据结构遵从后进先出(先进后出)的原则;如图所示,每次在栈中添加元素或者取出元素时,只能在栈顶进行操作,这就是后进先出的原则类似于我们现实生活中的枪械的弹夹一般:先装入弹夹的子弹,往往在弹夹的最下方,同时也是最后一个被发射出去的;又例如:这是我们qq的更新的弹窗,如果我们不关闭这个弹窗,就无法使用qq的其他功能,这个弹窗是最后一个弹出来的,同时也是第一个被关闭的,这里同样使用的栈这个数据结构;原创 2024-03-11 00:11:13 · 837 阅读 · 1 评论 -
数据结构 之 链表LinkedList
在我学习顺序表之后,我就立马开始了链表的学习,但是在学习链表之前,我就有一个疑问,为什么明明有了顺序表这一种数据结构为什么我们还要有链表这一种数据结构呢?原创 2024-03-06 18:08:03 · 1022 阅读 · 7 评论 -
基于ArrayList实现的简单的 <洗牌算法>
相信大家都打过扑克牌吧,每当亲朋好友相聚一堂的时候,总少不了这一个娱乐环节,斗地主,跑得快等玩法层出不穷,同时在手机上也出现了不少的扑克牌娱乐的软件;在我们准备打牌的时候,我们会先拿出一副牌,进行简单的洗牌之后,每人再依次摸牌当我们在线下或线上进行扑克牌活动时,不知道大家有没有想过,我们该如何用编程来实现洗牌发牌的这一过程呢???这就是接下来我要讲解的;(ps: 以下的扑克牌大小用1 ~ 13代替,并且没有大小王,所以一共只有52张牌!!!原创 2024-03-03 16:42:50 · 403 阅读 · 0 评论 -
数据结构 之 顺序表 ArrayList (Java)
在该篇文章中,大概介绍了顺序表,以及模拟实现了顺序表中的常用方法;原创 2024-03-02 14:14:30 · 1156 阅读 · 6 评论