数据结构学习
文章平均质量分 97
IMUHERO
持续学习者
展开
-
数据结构学习(一):数组<JAVA>
2019年2月27日第一次书写......2019年7月20日第二次书写并修改完善......一:学习之路从今天开始数据结构的学习,并通过CSDN记录自己的学习之路,加油哦!!!二:实现内容:1.Array类里面实现的众多数组的基本操作,包括增、删、查、改等方法;2.main函数里面完成了对Array方法的测试,并通过println显示测试结果;3.补充了动态数组以及泛...原创 2019-02-27 20:17:16 · 236 阅读 · 0 评论 -
数据结构学习(九):线段树(SegmentTree)
一、概念介绍1.概念:线段树是一种高级的数据结构,常用来处理区间范围问题,如:①区间查询:如给定一个数组int [ ]arr={-1,-2,0,1,2,3,-3,0},需要反复查询[i,j]范围内的和(也可以是自定义的某种融合方法,加减乘除等等)②墙壁涂色:给定一面墙壁,假设1代表红色,2代表黄寺,3代表蓝色,【1,2,3,3,3,2,1】需要反复查询[i,j]范围内总共有多少...原创 2019-05-05 09:18:43 · 252 阅读 · 0 评论 -
数据结构学习(十三):红黑树(RBTree)
一、基本概念(一)红黑树的五个性质:所有的节点要么是黑色的要么是红色的; 根节点是黑色的; 叶子结点是黑色的; 每一个红色节点的子节点都是黑色的; 从任意节点到子节点经过的黑色节点个数是相同的。为了解释以上五个性质,我们先来了解一下23树这种数据结构,红黑树的基本设计思想和23树有着异曲同工之妙。(二)23树1.步骤演示:->由图可见,插入的新节点会和原...原创 2019-05-19 00:18:20 · 597 阅读 · 0 评论 -
数据结构学习(十二):AVLTree
一、基本概念平衡二叉树:对于任意一个节点,左子树和右子树的差值不能大于1例1:(满足)例2:(不满足)二、实现的主要操作:1.定义height:标记当前节点的高度值2.设定getBalanceFactor方法,计算左右子树差值的平衡因子3.预定两个测试函数:测试自己实现的代码是否满足BST和AVL性质4.四种旋转操作:LL、RR、LR、RL//1.右旋...原创 2019-05-13 22:27:01 · 158 阅读 · 0 评论 -
数据结构学习(十一):并查集
目录一、概念介绍二、代码与解析1.第一版的并查集:2.第二版的并查集:3.第三版的并查集:4.第四版的并查集5.第五版的并查集6.更多优化7.并查集的时间复杂度分析:2019年5月9日第一次书写2019年8月31日更新完善一、概念介绍1.并查集是一种高级的数据结构,他的主要方法有两个:isConnected(int i,int j)/...原创 2019-05-09 19:54:09 · 293 阅读 · 0 评论 -
数据结构学习(十):字典树(Trie)
一、概念复习:1.字典树是一种高级的数据结构,传闻早前手机客户经常会因为通讯录中存储太多人,导致每次查找号码时耗时过长,这个问题被微软的一个实习生解决了,他的解决办法就是使用了字典树这种神奇的数据结构。2.字典树的优势在于,他的查找时间取决于查询内容的长度,而不是取决于库中有多少数据量,这在一些大数据量的应用场景中十分管用。3.他的基本结构就是在节点中存储指向下一个节点的指针,并且通过...原创 2019-05-07 19:50:02 · 370 阅读 · 0 评论 -
(补充)数据结构学习:栈和队列
目录一、栈二、队列1.简单队列2.循环队列:2019年3月2日第一次书写......2019年7月25日第二次书写并修改完善......一、栈1基本功能:public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e ); /...原创 2019-07-25 22:28:03 · 188 阅读 · 0 评论 -
数据结构学习(十四):图
目录一、基本概念二、构造函数三、构造稠密图和稀疏图四、辅助函数:将文本转化成图:五、计算连通分量: (深度优先遍历)六、计算从n->m的路径(深度优先遍历及改进)七、最短路径(广度优先遍历及改进)八、测试函数:一、基本概念1.图的定义:图:由节点和节点之间的连接组成,如下图所示(红色圆代表节点,黑线代表连接):图可以分为:(1)有...原创 2019-05-22 22:46:08 · 739 阅读 · 0 评论 -
数据结构学习(十五):自己实现的哈希表
目录一、哈希表概念二、哈希函数的设计:三、哈希冲突如何避免?四、设计自己的哈希表1(静态)五、设计自己的哈希表2(动态)六、设计自己的哈希表2:使用合理的hash容量一、哈希表概念哈希表是算法领域一种典型的以时间换空间的数据结构,设计哈希表最主要需要考虑两个问题:一个是哈希函数的设计再一个是如何避免哈希冲突二、哈希函数的设计:1.对数据转换成正...原创 2019-08-28 00:22:16 · 580 阅读 · 0 评论 -
*二叉树的遍历(递归与非递归方式)
一、二叉树的遍历二叉树是一种使用广泛的数据结构,掌握二叉树的遍历方式至关重要,以下列出了二叉树的四种遍历分析,其中前、中、后序遍历分别使用递归和非递归方式来实现。=>层序遍历、前序遍历、中序遍历、后续遍历二、前提条件假设构造部分如下:import java.util.Stack;import java.util.Queue;import java.util.Link...原创 2019-04-05 18:51:22 · 323 阅读 · 0 评论 -
数据结构学习(七):映射(Map)
一、本节学习目标映射是常用的数据结构,主要用于存储键值对(key:value),实现方法是在原来定义的节点中将E e,替换成K key和V value,基本实现原理与链表和二叉树没有太大差别。需要注意的是,映射总是使用key来作为index,而value总是在需要的时候通过key来查找的。就像字典一样,key是单词,value是释义,因此映射有时候也称之为“字典”。实现的基本功能:1...原创 2019-03-12 17:56:36 · 324 阅读 · 0 评论 -
数据结构学习(六):集合(Set)
一、本节学习目标:集合:集合是JAVA常用的数据结构,集合中不允许有重复的元素存在,在许多场合有着广泛的应用,如:查找一本小说中的英文单词数(不重复);实现集合的基本功能:1.boolean isEmpty();2.boolean contains(E e);3.void add(E e);4.void remove(E e);5.int getSize();二、具体...原创 2019-03-12 17:47:43 · 163 阅读 · 0 评论 -
数据结构学习(三):循环队列与数组队列的时间复杂度对比方法
一、实现方法1.同时对循环队列和数组队列入队、出队opCount次;2.用两个System.nanoTime来算出中间代码的执行时间;3.导入import java.util.Random包,并使用Random中的nextInt(max),其中的max是指输入0-max间的随机数二、具体代码package IMUHERO;import java.util.Random;...原创 2019-03-05 17:29:37 · 3244 阅读 · 0 评论 -
数据结构学习(二):循环队列
一、实现目标1.实现循环队列,减少出列的复杂度为O1;2.不使用size;3.难度更大,挑战性更大。二、具体代码package com.company;public class LoopQueue <E>implements Queue<E>{ private E [] loopqueue; int front,tail; ...原创 2019-03-02 16:24:39 · 267 阅读 · 0 评论 -
数据结构学习(四):链表
一、学习内容今天开始学习链表,主要实现的功能有:getSize:获得链表大小;isEmpty:判断链表是否为空;add(int index,E e):在索引为index的位置添加元素e;get(int index):获得索引为index处的元素;set(int index,E e):将索引为index处位置的元素替换为e;contain(E,e):判断链表中是否含有元素...原创 2019-03-05 20:31:38 · 202 阅读 · 2 评论 -
数据结构学习(四):用链表实现栈
一、实现功能使用链表来实现栈的getSize、isEmpty、push、pop、peek功能二、具体代码:1.上一节课实现的链表:package IMUHERO;/** * @作者:IMUHERO * @时间:2019/3/5 * @内容:带虚拟头结点的链表的基本功能实现 */public class LinkedList<E> { private...原创 2019-03-05 21:55:04 · 394 阅读 · 0 评论 -
数据结构学习(四):用链表实现队列
一、任务目标用链表实现队列的基本功能:1.getSize;2.getFront;3.isEmpty;4.enqueue;5.dequeue;二、实现代码:1.接口部分:package IMUHERO;public interface Queue<E> { E getFront(); boolean isEmpty(); ...原创 2019-03-06 00:16:18 · 403 阅读 · 0 评论 -
数据结构学习(七):最大堆和优先队列
一、概念介绍1.最大堆;(1)最大堆是一颗完全二叉树、(2)堆中某个节点的值总是不大于其父节点的值(最大堆)(3)在数组中表示最大堆【若数组采用以index=0为根节点】Parent(i)=(i-1)/2 Left child=2*i+1 Right child=2*i+22.优先队列(1)优先队列是队列中的一种特殊情况;(2)入队后会自动将优先级最高的元素往前...原创 2019-03-15 09:27:50 · 290 阅读 · 0 评论 -
数据结构学习(五):二叉树
一、学习目标:使用递归的思想完成二叉树基本功能的实现二、实现的方法:0.构造方法public class BST <E extends Comparable<E>>{ private class Node{ //定义节点为私有类(用户不需要知道) public E e; public Node left; ...原创 2019-03-10 11:38:26 · 189 阅读 · 0 评论 -
事务
目录一、数据库的四大特性二、事务隔离级别以及各级别下的并发访问问题三、InnoDB可重复读隔离级别下如何避免幻读?四、RC、RR级别下的InnoDB的非阻塞读如何实现一、数据库的四大特性定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。原子性(Atomic):事务包含的所有操作,要么全部执行,要么全部失败回滚 一致...原创 2019-09-01 07:40:46 · 242 阅读 · 0 评论