数据结构
文章平均质量分 94
对于数据结构的详细剖析
龙ze
这个作者很懒,什么都没留下…
展开
-
数据结构——七种排序(java)实现
即在待排序序列中选出了一个基准值以后,将此基准值从所在的数组位置中移到临时变量中,此数组位置便成为一个空位,然后创建两个标记,左标记与右标记,右标记先走,遇到小于基准值的数据则将此值放入当前的空位中,然后左标记再走,直到两者相遇,两者相遇时,此时正指向空位,将临时变量的值赋给此空位,然后将左区间与右区间递归上述操作。在设定待排序序列的最小值下标与最大值下标均为left,然后再遍历过程中,遇到小于当前最小值的下标时,则替换下标,最大值亦是如此,遍历一遍,然后待排序序列从左右均收缩一个元素。原创 2024-10-06 18:21:54 · 1044 阅读 · 1 评论 -
数据结构—(java)反射,枚举,lambda表达式
java的反射机制是指,在程序的运行状态中,对于任意一个类,可以获取这个类的全部信息(包括,类加载器(后面会学到),构造方法,成员属性,成员方法等。对于任意一个对象,我们也能够调用其属性与方法进行修改信息,这种动态地获取信息与动态地调用对象的机制,我们称为反射机制。原创 2024-09-20 21:11:20 · 1163 阅读 · 0 评论 -
数据结构——(java版)Map与Set
哈希表是一种数据结构,其实现思想是基于通过数据的关键码与所存地址两者之间构建映射关系,能够一次直接从表中得到想要搜索的元素。数据的关键码与所存地址之间的关系由哈希函数实现,规则为:设定适合的哈希函数之后,输入的关键码通过哈希函数的计算得出所存的地址。由此构造出来的结构称为哈希表。哈希表相对于二叉搜索树以及其他查询方式,不需要与多个关键码比较,这极大提升了查询的效率。原创 2024-09-11 10:32:21 · 1274 阅读 · 1 评论 -
数据结构(java实现)——优先级队列,堆
前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该种场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;把前k个元素创建为大根堆,遍历剩下的N-K个元素,和栈顶元素比较,如果比栈顶元素小,则删除栈顶元素,将此元素入堆。如果要创建小根堆,我们只能保证堆顶元素为最小值,但是不能保证,左边的元素比右边的元素大,这不是小根堆的特性。原创 2024-08-07 17:55:52 · 852 阅读 · 1 评论 -
数据结构-二叉树(java实现)及相关的oj题
树是一种数据结构,对比于生活中常见的树,其逻辑结构是倒立着的:树是由n个节点组成的有限集,(当n==0时,称此树为空树),对于任何一棵非空树,只有唯一的根节点root.当n>1时,除去根节点,剩余节点可以分为m个有限集(m>0),这些有限集互不相交,其中每个集合又是一棵树,称为根的子树。原创 2024-08-03 18:03:27 · 795 阅读 · 0 评论 -
数据结构——队列(java实现)及相应的oj题
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,一种先进先出的数据结构。队尾:允许插入的一端。队头:允许删除的一端。原创 2024-07-20 10:48:25 · 723 阅读 · 1 评论 -
数据结构——栈的实现(java实现)与相应的oj题
2. 后缀表达式先进栈的是左操作数,后进栈的是右操作数,当我们需要出栈时,第一次获取栈顶元素是右操作数,第二次获取栈顶元素才是左操作数。实现思想:遍历字符串,遇到左括号则存入栈中,遇到右括号则与栈顶元素比较,相匹配,则继续循环,如果不匹配或栈为空,则返回false。栈也是一种线性表,栈只允许在表的一端进行插入与删除操作,所以栈中数据的特征的先进后出(先进来的后出去)。,获取两个操作数进行计算(需要注意的是第一次出栈的是右操作数,第二次出栈的是左操作数)原创 2024-07-17 16:08:17 · 826 阅读 · 2 评论 -
数据结构——单链表与双链表(java实现)
链表是线性表的一种,在物理存储结构上不一定连续(绝大多数情况下非连续),在数据逻辑顺序上,将节点用指针链接起来实现连续。链表是由一个一个的节点组成节点:节点中分为数据域与指针域,数据域用于存放数据,指针域用于存放下一个节点的引用地址。原创 2024-07-15 17:21:36 · 1259 阅读 · 7 评论 -
数据结构——顺序表(java实现)
顺序表是线性表的一种所谓线性表指一串数据的组织存储在逻辑上是线性的,而在物理上不一定是线性的顺序表的底层实现是数组,其由一群数据类型相同的元素组成,其在逻辑与物理上均是线性的。原创 2024-07-08 19:37:54 · 665 阅读 · 4 评论 -
数据结构——(java版)包装类与泛型
对于一般的方法与变量,只能使用具体的类型:自定义类型与基本数据类型,但是如果要写适用于多种类型的代码,这种刻板的方式对代码的束缚就很大,我们可以通过泛型来解决这个问题,本质就是将类型参数化!原创 2024-06-05 18:07:25 · 986 阅读 · 5 评论 -
数据结构---时间复杂度与空间复杂度
时间复杂度在计算机科学中的定义就是一个描述程序执行次数的函数,它大略地(数据并不精准!)定量地描述了程序执行的时间,实际上因为各种因素的不同(比如硬件设备等),我们是无法计算出执行一段程序所需的时间的,只有上机测试才能够知道。我们不可能对每个算法都实现一遍去测试(成本太高!),所以我们需要找出衡量这些算法优劣(针对运行时间讲)的规则。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。k < 2 * N;原创 2024-06-02 10:50:18 · 1322 阅读 · 7 评论