数据结构
dragon@oo
糟糕的坚持也好过放弃
展开
-
java队列
一、定义队列是一种数据结构,它有两个基本操作:在队列尾部插入元素,和从队列头部移除一个元素,队列以一种先进先出的方式管理数据。二、队列类型在java并发包中提供了基于内存的BlockingQueue的实现,常用的有ArrayBlockingQueue(数组形式存储)、LinkedBlockingQueue(以Node节点的链表形式存储)、PriorityBlockingQueue和...原创 2019-06-20 16:02:15 · 159 阅读 · 0 评论 -
单向链表和双向链表demo
链表介绍链表优劣势:插入和删除速度快,查询速度慢链表分类:单向链表:只有头结点,每个节点可以指向下一个节点双向链表:有头结点和尾结点,每个节点不仅可以指向下一个节点,还可以指向上一个节点单向链表1、node节点package com.springboot.demo.linked;import lombok.AllArgsConstructor;import lo...原创 2019-06-19 16:27:54 · 401 阅读 · 0 评论 -
七种常见排序算法
排序口诀:冒(冒泡)择(选择)路(入:插入)兮(希尔)快(快速)归(归并)堆一、直接插入排序经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中算法思想:1、首先设定插入次数,即循环次数,for(int i=1;i < length;i++),1个数的那次不用插入2、设定插入数和已经得到排好序列的最后一位数的位置,即insertNum 和 j = i ...原创 2019-06-20 14:25:40 · 970 阅读 · 0 评论 -
java实现二叉树创建删除以及递归非递归遍历demo示例
基本概念二叉树:每个节点最多有两颗子树,即左子树和右子树,次序不可以颠倒(即先有左才能有右)满二叉树:除最后一层无任何子节点外,每一层上的所有节点都有两个子节点二叉树。即如果一个二叉树的层数为k,且节点总数是2^k-1,则它就是满二叉树。平衡二叉树:它是一颗空树或者它的左右两个子树的高度差的绝对值不能超过1,并且左右两个子树都是一颗平衡二叉树。平衡二叉树的常用实现方法有红黑树(非严格平...原创 2019-07-25 11:28:51 · 853 阅读 · 0 评论 -
红黑树(RBTree)和AVL树对比
红黑树和AVL树都是平衡二叉查找树,而AVL树还是严格平衡的,那么为什么有了AVL树还需要有红黑树的存在呢?下面从以下四个方面来分析两者的区别,这样就可以看出红黑树的必要性了定义红黑树(RBTree):是一种非严格平衡的二叉查找树,即不完全符合左右子树的高度差最大为1这个条件,通过引入节点颜色来降低旋转次数AVL树:是一种严格平衡的二叉查找树,即严格遵循左右子树的高度差最大为1这个条件...原创 2019-07-30 16:25:35 · 1577 阅读 · 0 评论 -
B-Tree和B+Tree详解
B-Tree详解B-Tree由来我们前面已经了解了平衡二叉查找树,如果100w条数据放入到二叉查找树中,假设树的高度为n,则2^0+2^1+2^2+2^3...+2^(n-1)=(2^n)-1=1000000,计算出来n为20,因此查找100w条数据中的一个数据时最多需要查询20次即可。如果是在内存操作的话,查询效率还是蛮高的,但是数据库中的数据都是存放在磁盘上的,每读取一个节点就需要一次...原创 2019-08-05 16:58:38 · 2328 阅读 · 2 评论 -
红黑树讲解
定义和规则定义:红黑树是一种含有红黑节点并能自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,需要重新自调整达到平衡状态,这里平衡的含义是保证最长路径不超过最短路径的两倍。红黑树是一种非严格平衡的二叉查找树,即不完全符合左右子树的高度差最大为1这个条件二叉查找树定义:二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小...原创 2019-07-29 17:22:22 · 698 阅读 · 0 评论