
数据结构
奋斗的runnoob
努力中
展开
-
查找/插入/删除的速度如何趋于线性且支持高并发——ConcurrentSkipListMap
ConcurrentSkipListMapConcurrentSkipListMap,属于并发集合类,来源于大名鼎鼎的J.U.C,集合并发类的要求是执行速度快,提取数据准,最著名的类便是之前有接触到的ConcurrentHashMap类,通过不断的优化,由刚开始的锁分段到后来的CAS,不断地去提高自身的并发性能,其他便是ConcurrentSkipListMap,CopyOnWriteArra...原创 2020-01-07 15:26:00 · 461 阅读 · 0 评论 -
从源码开始手撸红黑树(构建与插入)
红黑树红黑树(Red Black Tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,是一个有限节点组成的一个具有层次关系的集合,数据就存在这些节点中。树首先我们先来了解一下树(Tree),root是根节点,在分支处有一个节点,指向多个方向,如果某节点下方没有任何分叉的话,就是叶子节点,从某个节点出发,到叶子节点位置,最长简单路径上边的条数,成为该节点的高度,从根节点...原创 2020-01-03 11:49:58 · 684 阅读 · 0 评论 -
JAVA链表部分排序算法实现
冒泡排序算法import java.util.LinkedList;public class maoPaoSuanFa { public static void main(String[] args) { LinkedList<Integer> list = new LinkedList<Integer>(); for(int i = 0; i <...原创 2019-03-23 18:28:21 · 712 阅读 · 0 评论 -
准备一个长度为9的日期数组,使用1970年-2000年的随机日期初始化该数组,最后按照这些日期的时间进行排序
import java.text.SimpleDateFormat;import java.util.Date;import java.util.GregorianCalendar;public class Demo08{ public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDat...原创 2019-04-10 16:16:10 · 853 阅读 · 0 评论 -
给定一个字符串,找出不含有重复字符的,最长子串的长度
import java.util.LinkedList;import java.util.Scanner;import java.util.Stack;public class Demo03 { public static void main(String[] args) { Stack<Character> stack = new Stack<Character...原创 2019-04-10 16:23:46 · 560 阅读 · 0 评论 -
java设计四位密码实践
import java.util.LinkedList;import java.util.Scanner;public class Demo06 {public static void main(String[] args) { LinkedList key = new LinkedList(); LinkedList input = new LinkedList(); Linke...原创 2019-03-29 10:48:31 · 589 阅读 · 0 评论 -
学院排序
import java.util.LinkedList;public class Demo10 { public static void main(String[] args) { int c = 18; LinkedList<Integer> list = new LinkedList<Integer>(); for(i...原创 2019-04-24 13:58:37 · 332 阅读 · 0 评论 -
HashMap与HashTable异同学习笔记
HashTable底层数组+链表实现无论key还是value都不能为null线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低初始size为11,扩容:newsize = oldsize * 2 + 1计算index的方法:index = (hash & 0xFFFFFFF)% tab.lengthHashMap底层数组+链表实现K...原创 2019-05-29 14:44:26 · 360 阅读 · 0 评论 -
输入两个整数M和N,求M的N进制表示方式(M大于0且N大于等于2小于等于16)
import java.util.Scanner;import java.util.Stack;public class suanFa02 { public static void main(String[] args) { Scanner console = new Scanner(System.in); Stack<Integer> stack = new Stack...原创 2019-03-29 15:37:31 · 1919 阅读 · 0 评论 -
一个数可以用二进制表示,也可以用十进制表示,如果该数的二进制表示法所有位数字之和等于十进制表示法所有位数之和,则称该数为神奇数,求小于等于M的神奇数有多少
import java.util.LinkedList;import java.util.Scanner;import java.util.Stack;public class suanFa01 { public static void main(String[] args) { Stack<Integer> stack = new Stack<Integer&g...原创 2019-03-29 14:25:39 · 619 阅读 · 0 评论 -
从零开始JAVA数据结构学习笔记(二)
import java.util.LinkedList;public class Demo02 { public static void main(String[] args) { LinkedList<Number> list = new LinkedList<Number>();//定义链表list LinkedList<Number> lis...原创 2019-03-21 10:17:21 · 151 阅读 · 0 评论 -
从零开始JAVA数据结构学习笔记(三)
对动态数组ArrayList部分自带功能进行了实验理解import java.util.ArrayList;import java.util.Arrays;public class Demo1 {public static void main(String[] args) { ArrayList<Number> arr1 = new ArrayList<Numbe...原创 2019-03-21 10:15:04 · 169 阅读 · 0 评论 -
从零开始JAVA数据结构学习笔记(四)
栈的定义: 栈又称为堆栈,是一种受限的线性表,这是因为它仅允许在线性表的固定一端(表尾)进行插入、删除、栈顶元素等运算,不允许在其他任何位置进行运算,限制操作的表尾端称为“栈顶”,另一端称为“栈底”。特点:栈是“后进先出”的线性表或“先进后出”的线性表。顺序存储结构 需要一个数组和整型变量,利用数组来存储元素,利用整型变量存储栈顶元素的下标,通常用TOP表...原创 2019-03-21 14:56:25 · 142 阅读 · 0 评论 -
从零开始JAVA数据结构学习笔记(七)
二叉树 二叉树是每个节点最多有两个子树的树结构。通常子树称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找和二叉堆。 定义:二叉树是一个连通的无环图,并且每一个顶点的度不大于3.有根二叉树还要满足根结点的度不大于2.有了根结点之后,每个顶点定义了唯一的父节点,和最多2个子结点。 完全二叉树...原创 2019-03-25 09:34:58 · 226 阅读 · 0 评论 -
使用JAVALinkedList解决约瑟夫圆环问题
import java.util.LinkedList;import java.util.Scanner;public class yueSeFuHuan { public static void main(String[] args) { int leftnum = 0; int x = 0; LinkedList list = new LinkedList(); S...原创 2019-03-22 10:17:00 · 690 阅读 · 0 评论 -
从零开始JAVA数据结构学习笔记(五)
队列队列的定义 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾(rear),进行删除操作的端称为队头(front)。队列的特性 队列中没有元素称为空队列(rear == front)。 队列中插入一个元素称为“入队”,从队列...原创 2019-03-22 12:00:51 · 182 阅读 · 0 评论 -
从零开始JAVA数据结构学习笔记(六)
对java自带的stack功能做部分理解import java.util.Stack;public class Demo03 {public static void main(String[] args) { Stack<Integer> stack1 = new Stack<Integer>();//定义一个栈stack1 for(int i = 0...原创 2019-03-22 14:29:01 · 123 阅读 · 0 评论 -
运用栈设计一个简单的二进制计算器
import java.util.Scanner;import java.util.Stack;public class erJinZhiJiSuanQi {public static void main(String[] args) { int sum = 0; Stack stack = new Stack(); Scanner console = new Scanner(Sy...原创 2019-03-22 14:31:46 · 606 阅读 · 0 评论 -
从零开始JAVA数据结构学习笔记(一)
线性表定义:线性表:由零个或多个元素组成的有限序列如果一个数据元素序列满足:(1)除第一个和最后一个数据元素外,每个数据元素只有一个前区数据元素和一个后继数据元素;(2)第一个数据元素没有前驱数据元素;(3)最后一个数据元素没有后继数据元素。注意:数组从0开始计算,线性表从1开始计算;线性表分支:(1)顺序表:使用顺序结构实现的线性表ps:计算机有两种基本的存储结构(物理):顺序...原创 2019-03-20 14:15:15 · 331 阅读 · 0 评论