随笔分类 -  数据结构与算法

摘要:Deque 接口表示一个双端队列(Double Ended Queue),允许在队列的首尾两端操作,所以既能实现队列行为,也能实现栈行为。 Deque常用的两种实现ArrayDeque和LinkedList,这篇主要介绍下Deque的常用操作,并重点看下ArrayDeque的实现逻辑。 1、接口AP 阅读全文
posted @ 2024-03-29 17:57 jingyi_up 阅读(855) 评论(0) 推荐(0) 编辑
摘要:堆是一种特殊类型的树,这种数据结构应用场景非常多,最经典的莫过于堆排序,堆排序是一种原地排序,它的时间复杂度是 O(nlogn)。 前面提到的快速排序,平均情况下时间复杂度也是 O(nlogn),甚至堆排序比快速排序的时间复杂度还要稳定,但是实际开发中,快速排序要比堆排序好,这是为什么呢?带着这个问 阅读全文
posted @ 2022-02-16 20:23 jingyi_up 阅读(146) 评论(0) 推荐(0) 编辑
摘要:1、二叉树基础 1.1、树的几个概念 节点的高度:节点到叶子节点的最大路径(边数) 节点的深度:根节点到这个节点所经历的边数 节点的层数:节点的深度+1 树的高度:根节点的高度 高度和深度的计数都是从0开始,来看个例子: 1.2、满二叉树和完全二叉树 (1)满二叉树 叶子节点全都在最后一层,除叶子节 阅读全文
posted @ 2022-02-14 20:23 jingyi_up 阅读(124) 评论(0) 推荐(0) 编辑
摘要:跳表最典型的应用是在 Redis 的有序集合,是通过哈希表+跳表来实现的,因为有序集合中的元素是不重复的,这是通过哈希表来实现的。 今天我们主要看跳表。先来看一张图: 跳表底层是链表来存储节点数据,然后逐层建立索引。它查询数据的时间复杂度是 O(logn),因为底层是链表,所以插入和删除的时间复杂度 阅读全文
posted @ 2022-02-11 14:51 jingyi_up 阅读(206) 评论(0) 推荐(0) 编辑
摘要:1、二分查找概念 1.1、核心思想 二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。 二分查找的时间复杂度是 O(logn),当数据量较大时,O(logn) 往往优于常量时间复杂 阅读全文
posted @ 2022-02-06 13:01 jingyi_up 阅读(139) 评论(0) 推荐(0) 编辑
摘要:1、衡量排序算法的标准 其实几乎所有算法都可以从几个方便进行衡量:执行效率、内存开销、稳定性。 排序算法也一样,主要从: • 时间复杂度,包括:最好情况、最坏情况、平均时间复杂度、还有比较和交换的次数 • 空间复杂度,如:原地排序 • 排序算法的稳定性,即相同数值的元素,排序后的前后顺序不变则称为稳 阅读全文
posted @ 2022-01-29 10:28 jingyi_up 阅读(102) 评论(0) 推荐(0) 编辑
摘要:1、衡量算法的标准 衡量算法的两个维度:时间复杂度和空间复杂度。 (1)时间复杂度 时间复杂度一般用大 O 时间复杂度表示,它并不是具体指代码真正执行的时间,而是代码执行时间随着数据规模增长的变化趋势。 三个判断方法: • 只关注循环执行次数最多的一段代码 • 加法法则 • 乘法法则:嵌套代码的时间 阅读全文
posted @ 2022-01-28 14:26 jingyi_up 阅读(91) 评论(0) 推荐(0) 编辑
摘要:Java 8系列之重新认识HashMap hashMap为什么链表长度为8才转换? 转换概率 链表查找速度和数组速度在8开始有差异 6个才还原,主要为了减少变换频率 hashMap为什么不使用AVL? AVL树就是平衡树 B树是平衡树 B+树是多路平衡树、数据在叶子节点链表上 红黑树是二叉搜索树 h 阅读全文
posted @ 2021-12-11 21:43 jingyi_up 阅读(38) 评论(0) 推荐(0) 编辑
摘要:1、归并排序 基本思路:借助额外空间,合并两个有序数组,得到更长的有序数组。例如:「力扣」第 88 题:合并两个有序数组。 算法思想:分而治之(分治思想)。「分而治之」思想的形象理解是「曹冲称象」、MapReduce,在一定情况下可以并行化。 public class Solution { // 归 阅读全文
posted @ 2020-06-28 17:36 jingyi_up 阅读(386) 评论(0) 推荐(0) 编辑
摘要:1、底层原理 ArrayList底层是用数组实现的存储。通过无参构造方法的方式ArrayList()初始化,则赋值底层数Object[] elementData为一个默认空数组Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}所以数组容量为0,只有真正对数 阅读全文
posted @ 2020-06-24 19:54 jingyi_up 阅读(35) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示