数据结构
文章平均质量分 62
不坠青云之志
这个作者很懒,什么都没留下…
展开
-
并查集的概念和实际应用
一 并查集的概念概念:并查集是一种树形的结构,这种数据结构是把一些元素按照一定的关系组合在一起。比如在亲戚关系的场景下,并查集是由一个跟节点(根节点指向自己)和所有他的子节点(可能是他的孩子节点或者子孙节点)组成。并查集的图解:特点:并查集(除了跟节点)所有节点都指向他们的父节点,跟节点指向自己常见用法:首先把一批数据按照特点(比如按照父子关系)拆分到不同的集合中,变成并查集,然后用于处理业务逻辑二 并查集在项目中的实际应用项目背景需要做一个通过excel导入商品类目..原创 2021-11-23 18:55:21 · 690 阅读 · 1 评论 -
java实现自定义类实现HashMap,Arraylist,Queue数据结构
java实现自定义类HashMap,ArrayList,Queue结构我们可能了解hashmap的用法,了解过底层的源码,jdk1.7底层采用拉链法实现,jdk1.8中采用红黑树。这里我们用jdk1.7中的方式实现hashmap数据结构。用结点类实现ArrayList和Queue。自定义类实现Queue结构:Queue.java:...原创 2018-12-25 22:16:20 · 531 阅读 · 0 评论 -
Arraylist和Linkedlist的区别以及性能分析详解
Arraylist和Linkedlist的区别以及性能分析Arraylistlist和Linkedlist的区别:1、Arraylistlist是基于动态数组实现的数据结构。Linkedlist是基于双向链表实现的数据结构。2、Arraylistlist对数据的读取修改的效率较Linkedlist快。因为Arraylistl...原创 2018-12-19 21:19:01 · 704 阅读 · 0 评论 -
红黑树的应用及增删改查
红黑树的应用及增删改查我们接触过数据结构的应该二叉树这种数据结构,他是对链表的改良版,防止每次遍历的最大的时间复杂度达到O(n)理想情况下,二叉树的查找效率是O(log n),但是当数据倾斜的时候,数据是有序的插入到二叉树的时候,这时候二叉树就退化成了链表,这时候便出现了AVL树,红黑树,B树来改良这种数据结构。今...原创 2018-12-09 21:36:25 · 1447 阅读 · 0 评论 -
java中HashMap、HashTable、CurrentHashMap的区别
java中HashMap、HashTable、CurrentHashMap的区别首先我们要知道有两种形式的集合。继承于collection接口的集合,继承于map的接口的集合。我们这里讨论的都是继承map接口的结合,以(key,value)的形式存储数据。实际上后缀是map的集合类最终实现的都是map接口。HashMap是我们比较常用的数据结构,我们可...原创 2018-12-20 15:37:01 · 2596 阅读 · 4 评论 -
B树应用及增删改查
B树应用及增删改查我们都可能了解二叉树结构,或者平衡二叉树结构。父结点的值比左孩子大,比右孩子小。为了防止数倾斜,再加上平衡操作。但是B树又有什么特点呢?B树的结构特点:B-树中所有结点中孩子结点个数的最大值成为B-树的阶,通常用m表示,从查找效率考虑,一般要求m>=3。一棵m阶B树或者是一棵空树...原创 2018-12-04 09:32:40 · 837 阅读 · 0 评论 -
java两个有序链表合并
java两个有序链表合并 今天做了个算法题,遇到了点问题。和大家分享一下要求是实现两个链表的合并。这个链表可以自己用类实现,也可以用LinkedList。为了方便访问,我用了后者实现。看一下代码:package MM;import java.util.LinkedList;public clas...原创 2018-11-13 11:50:14 · 299 阅读 · 0 评论 -
平衡二叉树增删改查java实现
二叉树排序树的操作二叉树又称排序树,是一种对数据操作达到logn的数量级的结构。在理想情况下每种操作可以达到这种效果。但是在现实中往往做不到这样。尤其是当数据有序插入或者数据量的分化程度大时复杂度会大大增加。这时候出现了平衡二叉树。作用是使二叉树的形状接近于矮胖。这样对树的各种操作就可以达到logn。二叉树的基本操作不再赘述。主要讲一下怎么在操作完一次后完成树的平衡。以插入为例,当插入一...原创 2018-10-09 00:01:03 · 820 阅读 · 1 评论 -
java算法分析 数组最长子序列问题
最长子序列问题描述:有一个整型数组,要求求出数组的值最大的子序列。子序列要求是连续的,数组里的值需要是整数,正负均可。问题分析可以设置三个值来找到最长子序列。max:找到单个最大的值sum:找到当前最大子序列和sum_max:得到最大子序列的和max可以通过一遍循环找到。sum从开始的位置往后加,一旦为负就把值设置为0,清空子序列,新的子序列从下个位置开始。在向下求和,不为0就...原创 2018-09-28 22:54:09 · 855 阅读 · 1 评论 -
二维数组输出-面试算法题
实现数组的特殊输出方式数组是我们最熟悉的顺序结构,遍历数组也有很多方法,但是像这样的二维数组我们应该怎么遍历呢?我们仔细观察会发现规律,横纵坐标之和是由规律且有范围的,这就是我们的切入点。先试着写代码,以下是第一次写的代码public static void bialian(int a[][]) { int num=0;int num2=0; int max1=0, max2...原创 2018-09-28 22:32:42 · 1071 阅读 · 0 评论 -
java中int double float等八种基本数据类型
首先我们先了解一下基本数据类型基本数据类型有八种bit:一个字节的数据类型(8位),范围是-128到127。short:两个字节,占16位。范围是-(2的15次方)到(2的15)-1一般不用这种数据类型。int:这是我们最常见也是最常用的数据类型。现在一般的计算机都是64位操作系统。(位)是指计算机一次计算能够处理的二进制的个数。一下各种类型都是在这种操作系统下进行讨论。int类型的数据...原创 2018-09-27 20:31:30 · 6183 阅读 · 1 评论 -
java二叉排序树增删改查
二叉树的增加和查找当你翻到这篇博客时,相信你对二叉树这种数据结构有一定的了解。通过二叉树对数据进行操作会比数组等数据结构优越的多。那么怎么对二叉树进行增删改查呢?首先来介绍下二叉树的插入、查询、遍历。因为java面向对象,我们就把每个结点当作对象处理。这个对象应该有value数值。指向左右孩子结点的对象,把整棵树连接起来。然后有一个指向自己的父结点,方便删除操作。tree类定义:pub...原创 2018-10-03 10:51:40 · 891 阅读 · 0 评论 -
java二叉树增删改查详解
二叉树的删除和修改二叉树的删除比较复杂。你要先找到要删除的结点。要删除的结点对象并不一定要删除。因为通过函数调用得到的只是他的副本。并不会真正的把他删掉。你只要让他不在树上就ok了。让删除结点的父节点,左右孩子结点用新的结点来指向就把该结点从树上删除了。然后找到要插入的结点。找法有三种情况:删除结点有左孩子这种情况下,找到左孩子的最右孩子。找到的结点是要上去的结点。如果该左孩子没有...原创 2018-10-03 10:18:47 · 1872 阅读 · 0 评论 -
java中数组和链表的区别
论数组和链表数组和链表是我们最常见也是最常用的数据结构,具体要选择哪种数据结构要根据我们的实际情况而定。我们先了解一下在内存和磁盘中两种数据结构的存储方式内存:磁盘:磁盘的存储容量和内存的存储容量就类似于excel中的一个个表格,而数组和链表就存储在其中。当我们正常用的时候可以,但是一旦我们对其中的数据进行增删改查,就会导致其中的某一行会只剩下一个个的片段。大类型的数据无法...原创 2018-09-25 23:23:50 · 2506 阅读 · 0 评论