![](https://img-blog.csdnimg.cn/2020111119283712.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法(Java)
文章平均质量分 94
数据结构与算法(Java)的笔记
JuBlog
这个作者很懒,什么都没留下…
展开
-
查找树(四):B-树和B+树
1. 磁盘I/O问题众所周知,相较于计算机指令的执行速度,访问磁盘所带来的开销是十分巨大的。对于一段需要访问磁盘的程序,程序运行的时间几乎都花费再了磁盘的I/O上。 也就是说,在这种情况下,如果我们可以将磁盘的访问次数减少一般,那么程序的运行时间也将减半。当数据量较少,可以完全存储在内存时,数据的访问相对来说是比较快的,类似AVL树、红黑树等数据结构可以将操作数据的时间复杂度控制在O(log2N)。当数据量很大时,无法将其存储在内存当中,只能退而求其次,存储在磁盘中;由于磁盘I/O速度的限制,此时大O模原创 2021-09-11 19:14:26 · 468 阅读 · 3 评论 -
查找树(三):红黑树(red black tree)
目录:1. 红黑树(red black tree)2. 插入操作2.1 情况32.2 情况42.2.1 单旋转2.2.2 双旋转3. 删除操作3.1 情况1(X是黑色,X的兄弟是红色)3.2 情况2(X是黑色,X的兄弟是黑色)3.2.1 X的父节点为红色3.2.2 X的父节点为黑色1. 红黑树(red black tree)关于自平衡的二叉查找树,AVL树是比较经典的一种,前面也对其实现原理做了比较详细的介绍。当然,相关的数据结构肯定不止这一种,历史上AVL树流行的另一种变种是红黑树。红黑树通过给节原创 2021-09-02 22:25:03 · 628 阅读 · 0 评论 -
查找树(二):AVL树
目录:1. AVL树2. 插入操作2.1 单旋转2.2 双旋转2.3 整棵树都平衡了吗?3. 删除操作1. AVL树从前面的探讨已经可以知道,普通的二分查找树的查找操作并不能实现O(log2n)的时间复杂度,因此需要为它添加平衡条件。这包含两个层面的意思:添加了平衡条件后,树的深度必须是O(log2(N)),毕竟这就是我们添加平衡条件的初衷;平衡条件必须要容易保持。举个例子,说起平衡条件,最容易想到的就是让每个节点的的左右子树的高度都保持一致,虽然这种平衡条件保证了树的深度,但它“太严格了”,因而原创 2021-08-30 22:15:37 · 803 阅读 · 0 评论 -
查找树(一):初探二叉查找树
1. 二分查找树(Binary search tree)查找是编写程序过程中最常用的操作之一,为此,出现了许多专门针对查找的数据结构与算法,旨在更加快速的定位指定元素的位置。说起查找算法,大家想必都会联想到二分查找;作为一种常见的查找算法,对于一组有序的元素,二分查找首先定位序列最中心的元素,然后将中心元素与目标值做比较,以确定目标值出现在“左半部分”或“右半部分”。根据二分查找的流程可以知道,每次比较都可以将查找范围缩小一半,因此它的时间复杂的可以达到O(log2n) 。二分查找可以说是在算法层面上,原创 2021-08-29 20:15:56 · 377 阅读 · 0 评论 -
常用排序算法总结
本文总结了常见的排序算法,主要包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序。原创 2021-03-13 20:28:12 · 88 阅读 · 0 评论 -
向量与列表(一种线性的数据结构)
向量(Vector)与列表(List)是两种典型的序列(Sequence),它的应用十分的广泛。熟悉 Java 的人一定都知道 ArrayList,它就是向量的一种具体实现。可以说,向量和列表在日常开发中占据了重要的地位,因此有必要深入的了解此数据结构。原创 2020-12-30 18:46:56 · 2032 阅读 · 0 评论 -
树(一种分支结构的数据组织方式)
作为一种抽象数据类型,树可以用来对一组元素进行层次化的组织,是一种常见的数据结构。本文在介绍了树这一基本概念之后,将主要介绍应用较为广泛的二叉树结构,并详细说明二叉树的四种遍历方式——前序遍历、中序遍历、后序遍历、层次遍历。对于更加复杂的树(如红黑树等),将在其它文章中进行介绍。原创 2021-01-10 22:08:00 · 1157 阅读 · 0 评论 -
队列(一种遵循先进先出原则的数据结构)
与日常生活中的排队相类似,队列是一种遵循先进先出原则的数据结构。本文主要介绍了队列的定义、利用数组实现队列、利用链表实现队列等内容。原创 2020-11-21 12:02:48 · 4518 阅读 · 0 评论 -
栈(也被称作堆栈,一种遵循先进后出原则的数据结构)
栈是一种遵循先进后出原则的数据结构,在实际开发中有着广泛的应用(例如Java虚拟机中的操作数栈)。本文主要介绍了栈的定义、利用数组实现栈、利用链表实现栈等内容。原创 2020-11-18 21:59:03 · 5467 阅读 · 0 评论