![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 95
明志学编程-
小比特,大梦想
展开
-
【数据结构】Map和Set(Java实现)
Map/Set 及实际实现类 HashMap/TreeMap/HashSet/TreeSet 的使用HashMap 和 HashSet 背后的数据结构哈希表的原理和简单实现原创 2024-08-11 22:36:56 · 1401 阅读 · 17 评论 -
【数据结构】二叉搜索树(Java + 链表实现)
Map接口是独立的实现Iterable接口的集合都是可以使用 for - Each 语句进行打印的搜索性能会非常高。原创 2024-08-07 17:24:39 · 965 阅读 · 20 评论 -
【数据结构】排序 —— 归并排序(mergeSort)、计数排序、基数排序
海量数据的排序问题外部排序:排序过程需要在磁盘等外部存储进行的排序 前提:内存只有 1G,需要排序的数据有 100G因为内存中因为无法把所有数据全部放下,所以需要外部排序,而归并排序是最常用的外部排序先把文件切分成 200 份,每个 512 M分别对 512 M 排序,因为内存已经可以放的下,所以任意排序方式都可以进行 2路归并,同时对 200 份有序文件做归并过程,最终结果就有序了。原创 2024-08-06 23:11:26 · 877 阅读 · 9 评论 -
【数据结构】排序 —— 快速排序(quickSort)
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有 元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度: O(N*logN)空间复杂度: O(logN)稳定性:不稳定。原创 2024-08-05 23:38:47 · 851 阅读 · 6 评论 -
【leetcode】根据二叉树创建字符串、二叉树的前中后遍历(非递归链表实现二叉树)
递归函数我们也可以用迭代的方式实现,两种方式是等价的,区别在于递归的时候隐式地维护了一个栈,而我们在迭代的时候需要显式地将这个栈模拟出来,其他都相同.原创 2024-08-04 23:45:02 · 1366 阅读 · 0 评论 -
【leetcode】平衡二叉树、对称二叉树、二叉树的层序遍历(广度优先遍历)(详解)
在遍历每个结点进行左右子树求高度的时候,就进行判断,能够优化时间复杂度该题有递归的思想,一定要结合图形来解决层序遍历就是广度优先遍历。原创 2024-08-04 22:17:29 · 1210 阅读 · 0 评论 -
【leetcode】相同的树、另一棵树的子树、翻转二叉树(利用深度优先遍历)
一定要结合图像来写题,递归有点绕,将大问题划分成一个一个相同的小问题来求解,一定要注意判断条件。原创 2024-08-03 23:50:07 · 850 阅读 · 0 评论 -
【数据结构】排序基本概念、插入排序、希尔排序(详解)
插入排序、希尔排序原创 2024-08-03 21:30:41 · 1164 阅读 · 0 评论 -
【数据结构】二叉树基本操作(孩子兄弟表示法 + Java详解 + 原码)
学习二叉树一定要结合图形,要掌握递归的思想,就是将一个大问题划分成相同的小问题二叉树部分要掌握前序、中序、后序、层序四种遍历方式,因为好多题就是基于这四种遍历方式的变种例如:求最大宽度求这棵树的左视图求这棵树的右视图。原创 2024-08-02 22:47:57 · 807 阅读 · 5 评论 -
【数据结构】树、二叉树(基本概念)
在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于刚开始对二叉树结构掌握还不够深入,为了降低学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等 二叉树结构了解的差不多时,反过头再来研究二叉树真正的创建方式。从概念中可以看出,二叉树定义是递归式的,因此后序基本操作中基本都是按照该概念实现的。原创 2024-07-31 09:44:35 · 584 阅读 · 2 评论 -
【数据结构】队列(链表实现 + 力扣 + 详解 + 数组实现循环队列 )
队列实现及使用(包括循环队列、用栈实现队列、用队列实现栈、了解双端队列)原创 2024-07-29 23:44:22 · 975 阅读 · 2 评论 -
【LeetCode】栈 - 20.有效的括号、150.逆波兰表达式求值、155.最小栈、栈的压入、弹出序列
栈、虚拟机栈、栈帧有什么区别呢?栈 ---- 数据结构虚拟机栈 ---- JVM内存栈帧 ---- 调用方法的时候开辟的内存原创 2024-07-27 23:42:18 · 834 阅读 · 3 评论 -
【数据结构】栈(基于数组、链表实现 + GIF图解 + 原码)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO( Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。栈顶栈底: 这个描述是偏向于逻辑上的内容,因为大家知道数组在末尾插入删除更容易,而单链表通常在头插入删除更容易。所以数组可以用末尾做栈顶,而链表可以头做栈顶。LinkedKist 就可以当做栈来使用。原创 2024-07-26 23:06:28 · 643 阅读 · 6 评论 -
【数据结构】链表之LinkedList(无头双链表实现 + 详解 + 原码)
LinkedList是无头双向非循环链表学习链表的知识一定要 结合图,多画图,才能深刻理解LinkedList官方文档LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。在集合框架中, LinkedList也实现了List接口。原创 2024-07-26 11:03:14 · 911 阅读 · 6 评论 -
【LeetCode】141.环形链表、142. 环形链表 II(算法 + 图解)
环形链表原创 2024-07-25 21:13:04 · 1781 阅读 · 3 评论 -
【LeetCode、牛客】链表分割、链表的回文结构、160.相交链表
链表分割、链表的回文结构、160.相交链表原创 2024-07-25 11:23:22 · 1245 阅读 · 6 评论 -
【数据结构】单链表面试题(Java + 力扣 + 详解)
单链表力扣面试题原创 2024-07-24 20:36:03 · 1119 阅读 · 1 评论 -
【数据结构】链表(单链表实现 + 详解 + 原码)
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。原创 2024-07-23 23:51:10 · 906 阅读 · 0 评论 -
【数据结构】顺序表(杨辉三角、简单的洗牌算法)
ArrayList 的具体使用原创 2024-07-22 22:55:49 · 451 阅读 · 0 评论 -
【数据结构】Java -- 顺序表(详解)
在集合框架中,List是一个接口,继承自Collection。List方法解释尾插 e将 e 插入到 index 位置尾插 c 中的元素删除 index 位置元素删除遇到的第一个 o获取下标 index 位置元素将下标 index 位置元素设置为 element清空判断 o 是否在线性表中返回第一个 o 所在下标返回最后一个 o 的下标截取部分 list在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:【说明】ArrayList是以泛型方式。原创 2024-07-21 23:31:42 · 1479 阅读 · 0 评论 -
【数据结构】包装类、初识泛型
只要会用就行一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的 代码,这种刻板的限制对代码的束缚就会很大。----- 来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。泛型在 c++ 里面是模版方法限定符 返回值类型 方法名称(形参列表) { ... }原创 2024-07-21 13:24:34 · 1172 阅读 · 0 评论 -
【数据结构】初识集合框架
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的 集合。数据结构 + 算法数据结构与算法是相辅相成的数据结构是为算法提供支持的而好的算法是一定依赖于好的数据结构算法就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单 来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。原创 2024-07-20 23:59:45 · 703 阅读 · 2 评论