
数据结构
宅猫coding
但行好事,莫问前程。
展开
-
数据结构:哈希表原理与HashTable、HashMap、HashSet
哈希表原理简析;HashMap源码详细分析;HashMap和HashTable的对比原创 2020-02-21 00:02:35 · 663 阅读 · 0 评论 -
数据结构:红黑树原理与TreeMap、TreeSet
简单分析红黑树的概念与性质,重点关注红黑树的旋转、插入、删除等核心操作原理以及实现。浅析插入及删除操作循环内部的状态转换。全文参考自《算法导论》原创 2020-02-19 00:06:24 · 366 阅读 · 0 评论 -
数据结构之二叉搜索树(BST)与Java实现
二叉搜索树概念;插入,删除,查找,寻找最大(最小),寻找前驱(后继)等相关操作 全文参考自《算法导论》原创 2020-01-05 17:09:51 · 291 阅读 · 0 评论 -
数据结构之图:单源最短路径算法详解与Java实现(Dijkstra算法与Bellman-Ford算法)
以通俗易懂的方式(讨论+图解+代码)的形式叙述有向图最经典的最短路径算法:Dijkstra算法和Bellman-Ford算法(另外有SPFA算法)原创 2020-01-03 16:01:55 · 468 阅读 · 0 评论 -
数据结构之图:最小生成树算法详解与Java实现(Kruskal算法与Prim算法)
核心思想+图解+代码的形式讲解最小生成树的经典算法:Kruskal算法(克鲁斯卡尔算法)和Prim算法(普里姆算法)原创 2019-12-13 20:52:46 · 410 阅读 · 0 评论 -
数据结构之并查集:按秩合并与路径压缩优化
并查集 1.并查集描述 一些有NNN个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。 为了快速解决这些问题,便有了并查集的概念。 并查集维护了一个不相交的动态集的集合S1,S2,⋯ ,Sn{S_1,S_2,\cdots,S_n}S1,S2,⋯,Sn,每个集合将有一个"首领"来标识该集...原创 2019-11-15 17:54:35 · 2237 阅读 · 0 评论 -
数据结构之图:深度优先与广度优先搜索算法Java实现
一、图的表示 1.图的两种表示 1.1 邻接表 对于图G=(V,E)G=(V,E)G=(V,E)来说,邻接表表示由一个包含∣V∣|V|∣V∣条链表的数组AAA构成,对于每一个结点u∈Vu\in Vu∈V,邻接链表A[u]A[u]A[u]包含所有与结点uuu之间有边相连的结点。 如下图所示: 如上图,图GGG是一个无向图,则对于边(u,v)(u,v)(u,v)来说,结点vvv将出现在链表A[u]A...原创 2019-11-10 17:56:12 · 424 阅读 · 0 评论 -
数据结构之二叉树与Java实现(非递归遍历详解)
一、二叉树相关知识 1.树 1.1 树的概念 树是由n(n≥0)n(n \geq 0)n(n≥0)个结点构成的集合,每个结点至多有一个前驱结点(根结点没有前驱结点),每个结点有若干个后继结点,结点满足条件: n>1n \gt 1n>1时,除根结点以外的所有结点被分为若干个不相交的集合S1,S2,⋯ ,SkS_1,S_2,\cdots,S_kS1,S2,⋯,Sk,其中每个集合又符合...原创 2019-11-04 20:26:09 · 442 阅读 · 0 评论 -
数据结构之堆与Java实现
一、堆 1.堆的概念 堆时一个数组,它可以被看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素 。除了树的最底层外,该树是完全充满的,底层不满时从左往右填充。 2.堆的性质 2.1 堆的高度 把堆看作一颗树,则堆中某个结点的高度就是该结点到叶结点最长简单路径上的边的数目。如此一来,堆的高度就是堆顶到叶子节点的最长简单路径上的边的数量。也即lg(N)lg(N)lg(N),之后我们可以发...原创 2019-10-24 14:50:51 · 221 阅读 · 0 评论 -
数据结构之队列与Java中的Queue,PriorityQueue
一、队列 1.队列简介 2.队列结构及其特点 3.顺序队列的假溢出问题 4.队列基本功能实现 5.性能分析 6.优先级队列 二、Queue 与 PriorityQueue 1.Queue接口 Queue是Java中关于队列的最顶级的接口,所有与队列有关类或接口均与Queue有直接或间接的关系,它继承自Collection类。 除去Collection类中的方法,它还提供入队,出队,查看队头元素的方...原创 2019-10-19 17:57:35 · 267 阅读 · 0 评论 -
数据结构之栈与Java中的Stack、Deque
栈 1.栈的定义 2.栈类型、结构及其特点 3.顺序栈的基本功能实现 4.链式栈的基本功能实现 Stack 1.Stack介绍 2.Stack部分源码分析 3.为什么说Stack是不优良的设计 Deque 1.使用Deque代替Stack 2.ArrayDeque部分源码分析 3.再谈LinkedList 总结 ...原创 2019-09-22 21:19:39 · 1268 阅读 · 2 评论 -
数据结构之链表与Java中的LinkedList
链表 1.链表定义 链表是线性表的一种。 线性表的定义为:一种可以在任意位置进行插入和删除数据元素操作的,由n个相同类型数据元素a0,a1,a2,⋯ ,an−1a_{0},a_{1},a_{2},\cdots,a_{n-1}a0,a1,a2,⋯,an−1组成的线性结构。其数据元素满足除第一个元素和最后一个元素外,每个元素只有一个直接前驱和直接后继,第一个元素没有前驱元素,最后一个元素没有后...原创 2019-09-11 11:57:18 · 323 阅读 · 1 评论 -
数据结构之顺序表与Java中的ArrayList、Vector
顺序表 1.什么是顺序表 顺序表是线性表的一种。 线性表的定义为:一种可以在任意位置进行插入和删除数据元素操作的,由n个相同类型数据元素a0,a1,a2,⋯ ,an−1a_{0},a_{1},a_{2},\cdots,a_{n-1}a0,a1,a2,⋯,an−1组成的线性结构。其数据元素满足除第一个元素和最后一个元素外,每个元素只有一个直接前驱和直接后继,第一个元素没有前驱元素,最后一个元...原创 2019-09-10 00:06:58 · 352 阅读 · 0 评论 -
Java集合框架总览
Java集合 Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类。 接口:代表集合的抽象数据类型。例如 Collection、List、Set、Queue、Map 等,这些接口以不同的方式操作集合...原创 2019-09-04 19:59:00 · 123 阅读 · 0 评论