有序表
文章平均质量分 75
AVL树、SB树、跳表...
爱敲代码的Harrison
种一棵树最好的时间是十年前,其次是现在。
展开
-
有序表改写练习——实现特定要求的结构
想要实现这样的结构,给用户表现得像数组一样,但是要求:在任何一个位置加入一个数的时候,时间复杂度做到O(LogN)在任何一个位置删除一个数的时候,时间复杂度做到O(LogN)读取任何一个位置的数的时候,时间复杂度做到O(LogN)package com.harrison.class25;import java.util.ArrayList;/** * @author Harrison * @create 2022-04-07-9:50 * @motto 众里寻他千百度,蓦然回首,那原创 2022-04-07 10:12:55 · 174 阅读 · 1 评论 -
改写有序表练习——滑动窗口中位数
题目有一个滑动窗口 :L是滑动窗口最左位置、R是滑动窗口最右位置,一开始L,R都在数组左侧任何一步都可能R往右动,表示某个数进了窗口任何一步都可能L往右动,表示某个数出了窗口想知道每一个窗口状态的中位数。package com.harrison.class25;/** * @author Harrison * @create 2022-04-07-7:49 * @motto 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。 */public class Code05_Slidin原创 2022-04-07 08:14:28 · 183 阅读 · 0 评论 -
改写有序表练习——达标的子数组数量
题目给定一个数组arr,和两个整数a和b (a<=b),求arr中有多少个子数组,累加和在[a,b]这个范围上,返回达标的子数组数量。package com.harrison.class25;import java.util.HashSet;/** * @author Harrison * @create 2022-04-06-17:34 * @motto 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。 */public class Code04_CountOfRangeSum原创 2022-04-06 19:49:03 · 298 阅读 · 0 评论 -
有序表之跳表
前言有序表按照设计思想分类的话,AVL树,SB树,红黑树属于上世纪设计思想;跳表属于本世纪设计思想,因为跳表的设计思想比上述实现有序表的结构更先进。但是跳表的常数项时间有点大。那么跳表还是搜索二叉树吗?用跳表实现有序表去增删改查它的时间复杂度也是LogN吗?回顾积压结构什么是积压结构,我的理解是不用频繁变动和扩容,ArrayList和HashMap都属于积压结构,还有SB树和红黑树,但是AVL树不属于积压结构。比如ArrayList动态数组,是以2^n方式来进行扩容。所以积压结构适合用在硬盘上,原创 2022-04-06 15:14:23 · 571 阅读 · 0 评论 -
有序表之SizeBalanceTree
SB树的平衡标准任何以叔叔结点的为头的子树的结点个数不小于任何一个以自己侄子为头结点的子树的结点个数。原创 2022-04-04 17:45:07 · 641 阅读 · 0 评论 -
有序表之AVL树
数据库中最重要的基础是索引,索引为什么能被建立起来,因为能建立索引的字段都是可以排序的,(任何字符串都可以排序)只是我们平时感受不深。排序是如何帮助加速找数据库里的东西的呢?在数据库里存数据的方式真的有可能是有顺序的。数据库里面硬盘结构可能就是有顺序的。底层数据写在硬盘上是顺序的,在底层数据之上建出一颗索引树。搜索二叉树单纯的加数据,找数据很容易,所以搜索二叉树本身就可以支持索引了,增删改查都在树上玩。但问题是,在最坏情况下,这棵树会退化成为链表。这个时候就引出了平衡搜索二叉树的概念:一棵树先保原创 2022-04-03 23:34:31 · 965 阅读 · 1 评论