
数据结构
haikuotiankongdong
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字典树(java实现)
字典树(java实现)原创 2020-05-13 11:30:23 · 3837 阅读 · 1 评论 -
LFU-LRK
LFU1.LFU1.1.原理LFU(LeastFrequentlyUsed)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。1.2.实现LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的数据块则...原创 2020-04-22 08:45:47 · 335 阅读 · 0 评论 -
计算机中的 图
https://blog.youkuaiyun.com/Unknownfuture/article/details/104467900?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2&utm_source=distribute.pc_relevant.none-task...原创 2020-04-15 22:55:48 · 368 阅读 · 0 评论 -
hashmap中两次hash过程
hashmap中两次hash过程// 计算二次Hash int hash = hash(key.hashCode());// 通过Hash找数组索引int i = indexFor(hash, table.length); /** * Returns a hash code for this string....原创 2020-04-14 00:05:53 · 7035 阅读 · 1 评论 -
B+树分裂
B+树分裂B+树的插入1)若为空树,创建一个叶子结点,然后将记录插入其中,此时这个叶子结点也是根结点,插入操作结束。2)针对叶子类型结点:根据key值找到叶子结点,向这个叶子结点插入记录。插入后,若当前结点key的个数小于等于m-1,则插入结束。否则将这个叶子结点分裂成左右两个叶子结点,左叶子结点包含前m/...原创 2020-04-13 11:10:43 · 4942 阅读 · 1 评论 -
红黑树叶子节点都为黑色
https://www.cnblogs.com/AhuntSun-blog/p/12458115.html原创 2020-04-11 23:33:52 · 2532 阅读 · 0 评论 -
深度优先搜索 广度优先搜索理解
深度优先搜索广度优先搜索1. 什么是 “搜索” 算法我们知道,算法都是作用于某种具体的数据结构上的,而深度优先搜索算法和广度优先搜索算法就是作用于图这种数据结构的。图上的搜索算法,就是从图中的一个顶点出发,到另一个顶点的路径。图有两种存储方法,邻接矩阵和邻接表,在这里我们用邻接表来存储图,并以无向图作为例子,但这...原创 2020-03-27 12:01:54 · 1447 阅读 · 0 评论 -
TreeMap使用场景 优势
TreeMap使用场景1- 简介TreeMap的底层实现原理基于红黑树实现的排序MapTreeMap增删改查的时间复杂度TreeMap的增删改查和统计相关的操作的时间复杂度都为O(logn)TreeMap的key和value的要求1 由于实现了Map接口,则key的值不允许重复(重复则覆盖),也不允许为...原创 2020-03-21 10:05:47 · 7171 阅读 · 3 评论 -
29 剑指offer--堆 数组--最小的K个数
最小的K个数题目输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。思路最简单的方法就是先排序,然后在遍历输出最小的K个数,方法简单粗暴。代码代码1 找一个放置的空间public ArrayList<Integer...原创 2019-10-31 12:11:46 · 312 阅读 · 0 评论 -
外部排序
外部排序有时,待排序的文件很大,计算机内存不能容纳整个文件,这时候对文件就不能使用内部排序了(这里做一下说明,其实所有的排序都是在内存中做的,这里说的内部排序是指待排序的内容在内存中就可以完成,而外部排序是指待排序的内容不能在内存中一下子完成,它需要做内外存的内容交换),外部排序常采用的排序方法也是归并排序,...原创 2020-03-03 16:01:01 · 1994 阅读 · 0 评论 -
java面试 –红黑树(插入删除过程详解)
java面试 –红黑树红黑树性质红黑树是一种自平衡二叉树,在平衡二叉树的基础上每个节点又增加了一个颜色的属性,节点的颜色只能是红色或黑色。具有以下性质:(1)节点要么是红色,要么是黑色,(2)根节点只能是黑色;(3)红黑树中所有的叶子节点后面再接上左右两个空节点,这样可以保持算法的一致性,而且所有的空节点都是黑色;(4)红色节点的父节点和左右孩子节点都是黑色,及黑红相间;...原创 2020-02-22 23:05:34 · 1781 阅读 · 0 评论 -
面试知识--TopN
如何在10亿数中找出前1000大的数1 分治2 10亿的数据int 需要4G 但是只有2G的内存怎么办3 多台机器同时算4 只有一台机器 – 堆/** * @author xiaoshi on 2018/10/14. */public class TopN { // 父节点 private int parent(int n) { ...原创 2019-10-31 21:47:01 · 673 阅读 · 1 评论 -
TreeMap了解吗 红黑树
TreeMap了解吗简介TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。TreeMap继承于AbstractMap,所以它是一个Map,即一个key-value集合。TreeMap 实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。(这里...原创 2020-02-04 00:48:54 · 859 阅读 · 0 评论 -
b树和b+树的区别
b树和b+树的区别b树和b+树的区别基本知识2-3树2-3-4树B树存储引擎(小知识点)Innodb使用的是B+树,他存在有一个主键索引和辅助索引两种索引,主键索引是在生成主键时就有的索引,他的叶子节点中存放的就是数据行,所以又称之为聚集索引。而另一类索引,辅助索引,就是我们人为新建...原创 2020-02-04 00:41:53 · 4196 阅读 · 0 评论 -
java数据结构B树 B+树 红黑树详解
B树 B+树 红黑树详解常见的查找算法B树查找插入没有破坏结构结构破坏分裂删除终端1 直接删除2兄弟够借3兄弟不够借非终端123B+树...原创 2019-10-17 16:53:06 · 1794 阅读 · 0 评论 -
java数据结构--查找--二分查找
二分查找1 概念二分查找是一种查询效率非常高的查找算法。又称折半查找。起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。2 二分查找思想有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,...原创 2019-10-13 12:01:45 · 452 阅读 · 0 评论 -
数据结构--双向链表 双端链表
双端链表 对于单项链表,我们如果想在尾部添加一个节点,那么必须从头部一直遍历到尾部,找到尾节点,然后在尾节点后面插入一个节点。这样操作很麻烦,如果我们在设计链表的时候多个对尾节点的引用,那么会简单很多。1、什么时双端链表:链表中保持这对最后一个连点引用的链表2、从头部插入要对链表进行判断,如果为空则设置尾节点为新添加的节点3、从尾部进行插入如果链表为空,则直...原创 2019-10-11 21:32:05 · 394 阅读 · 0 评论 -
数据结构-简单排序
排序1冒泡排序/* * @Author liuhaidong * @Description 冒泡排序 * @Date 15:43 2019/9/15 0015 * @Param * @return **/public static void BubbleSort(long[] arr){ long tmp = 0; for(int i=0;i<arr.len...原创 2019-09-15 17:09:23 · 351 阅读 · 0 评论 -
数据结构-栈 队列(数组实现栈、队列、循环队列)
栈和队列栈1栈描述先进后出 底层是一个数组2类的概念永远记住类是由类的属性和方法组成的,在类中写其它的就是错误3 栈/** * @Auther: liuhaidong * Data: 2019/9/15 0015、17:14 * Description: * @version: 1.0 */public class MyStack { //底层是一个数组 ...原创 2019-09-15 18:54:50 · 176 阅读 · 0 评论 -
数据结构--希尔排序
希尔排序/* * 希尔排序 */public class ShellSort { /** * 排序方法 */ public static void sort(long[] arr) { //初始化一个间隔 int h = 1; //计算最大间隔 wh...原创 2019-09-28 20:51:52 · 179 阅读 · 0 评论 -
数据结构--树
树一、 树树(Tree)是元素的集合,每棵树由多个节点(node)组成,用以储存元素。某些节点之间存在着一定的关系,用连线表示,连线称为边(edge)或者链接。边的上端点成为父节点,下端称为子节点。每个节点可以有多个子节点,而该节点则是相应子节点的父节点。但是每个节点只能有一个父节点...原创 2019-09-30 18:53:32 · 705 阅读 · 0 评论 -
数据结构--快速排序
快速排序最全详解(java)快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3...原创 2019-10-02 15:50:49 · 377 阅读 · 0 评论 -
数据结构--堆排序
堆排序简单来说:堆排序是将数据看成是完全二叉树、根据完全二叉树的特性来进行排序的一种算法最大堆要求节点的元素都要不小于其孩子,最小堆要求节点元素都不大于其左右孩子 那么处于最大堆的根节点的元素一定是这个堆中的最大值 这里我们讨论最大堆:当前每个父节点都大于子节点 完全二叉...原创 2019-10-02 20:24:17 · 467 阅读 · 0 评论 -
数据结构--归并排序
归并排序1 定义归并排序是一种概念上最简单的排序算法,与快速排序一样,归并排序也是基于分治法的。归并排序将待排序的元素序列分成两个长度相等的子序列,为每一个子序列排序,然后再将他们合并成一个子序列。合并两个子序列的过程也就是两路归并。2 思路以及图解归并排序是采用分治法的一个非常...原创 2019-10-02 21:47:31 · 249 阅读 · 0 评论 -
数据结构--排序总结
排序总结目录1 基本定义2排序算法分析 3交换排序冒泡排序快速排序4 插入排序直接插入排序希尔排序5 选择排序选择排序堆排序6 归并排序7函数主体1 基本定义排序:使数据按照某个或某些关键字的大小,递增(默认升序)或递减的排...原创 2019-10-02 22:10:40 · 297 阅读 · 0 评论 -
java数据结构--单链表
单链表链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随...原创 2019-10-11 12:07:02 · 287 阅读 · 1 评论 -
数据结构-数组
**数组**1初始化数组1.Java 数组初始化的两种方法:静态初始化: 程序员在初始化数组时为数组每个元素赋值;动态初始化: 数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值。public static void main(String[] args) { //静态初始化数组:方法一 String cats[] = new String[] {“...原创 2019-09-15 12:27:02 · 131 阅读 · 0 评论