![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA数据结构
Limm_666
Github--->【https://github.com/Limm666】
展开
-
Java数据结构之动态数组
动态数组实现需求 增:(add(),addFirst(),addLast())删:(remove(),removeFirst(),removeLast())改:(set(),)查 :(find(),contains(),isEmpty(),get(),getLast(),getFirst(),getCapacity(),getSize())动态改变size:(reSize())...原创 2018-08-16 10:00:11 · 375 阅读 · 0 评论 -
LinkedListSet 和 BSTSet 性能分析
集合基于底层实现不同,而造成的性能不同基于链表的集合基于二分搜索树的集合 method LinkedListSet BSTSet 增add O(n)【需要查】 O(h)[平均] 查contains O(n) O(h)[平均] 删remove O(n)【均摊】 O(h)[平均]h指代的是二分搜索树的deepth...原创 2018-08-21 21:38:51 · 173 阅读 · 0 评论 -
JAVA数据结构之并查集【最终版】
用树实现的并查集接口public interface UF{ int getSize(); boolean isConnected(int p,int q); void unionElements(int p,int q);}public class UnionFindV6 implements UF{ //孩子指向父亲 pri...原创 2018-08-29 10:13:56 · 159 阅读 · 0 评论 -
JAVA数据结构之BSTMap
BSTMap由BST底层实现的映射接口public interface Map<K,V> { void add(K key, V value); V remove(K key); boolean contains(K key); V get(K key); void set(K key,V newValue); i...原创 2018-08-25 09:45:09 · 524 阅读 · 0 评论 -
不同底层结构的映射效率比较
映射基于底层实现不同,而造成的性能不同基于链表的映射基于二分搜索树的映射 method LinkedListMap BSTMap BST[avr Time] worst 增add O(n) O(h) O(logn) O(n) 删remove O(n) O(h) O(logn) O(n) 改set O...原创 2018-08-25 09:46:48 · 229 阅读 · 0 评论 -
JAVA数据结构之MaxHeap
最大堆的实现最大堆,父节点大于子节点因为堆必定为平衡树,最大深度相差不超过1,所以可以用数组实现根结点从0开始计算public class MaxHeap<E extends Comparable<E>>{ private Array<E> data; public MaxHeap(int capacity){ ...原创 2018-08-25 11:26:22 · 1439 阅读 · 1 评论 -
JAVA数据结构之AVLTree平衡二叉树
public class AVLTree<K extends Comparable<K>,V>{ private class Node{ public K key; public V value; public Node left,right; public int height; public...原创 2018-08-29 20:10:37 · 161 阅读 · 0 评论 -
JAVA数据结构之LinkedListMap
LinkedListMap底层用LinkedList实现Mappublic class LinkedListMap<K,V> implements Map<K,V>{//内部定义节点 private class Node<K,V>{ public K key; public V value; ...原创 2018-08-25 19:49:40 · 1212 阅读 · 0 评论 -
JAVA数据结构之优先队列
在每个元素都有优先级的情况下 Struct 入队 出队(拿出最大元素) 普通线性结构 O(1) O(n) 顺序线性结构 O(n) O(1) 堆 O(logn) O(logn)用堆实现: - 优先队列的实现,是根据优先值来实现,先执行优先级高的任务,但是因为队列在源源不断更新,所以需要动态调整优先队列,将要执行...原创 2018-08-25 20:30:49 · 200 阅读 · 0 评论 -
JAVA数据结构之BST实现Set集合
Set 接口public interface Set<E>{ void add(E e); void remove(E e); boolean contains(E e); int getSize(); boolean isEmpty();}//需要之前的BST类BSTSetpublic class BSTSet&l...原创 2018-08-21 21:35:19 · 276 阅读 · 0 评论 -
JAVA数据结构之链表实现Set集合
Set集合Set Stack Map Queue 这类依托更底层的数据结构搭建的数据结构称为高层数据结构Set 接口public interface Set<E>{ void add(E e); void remove(E e); boolean contains(E e); int getSize(); boolean is...原创 2018-08-21 21:28:16 · 716 阅读 · 0 评论 -
java数据结构之动态数组实现栈
接口public interface Stack &lt;E&gt;{ int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}栈public class ArrayStack&lt;E&gt; implements Stack&lt;E&gt; {...原创 2018-08-16 10:15:29 · 109 阅读 · 0 评论 -
JAVA数据结构之动态数组实现队列
接口public interface Queue&lt;E&gt;{ int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront();}队列public class ArrayQueue&lt;E&gt;{ private Arra...原创 2018-08-16 10:33:40 · 181 阅读 · 0 评论 -
LeetCode 对栈的练习
20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2输入: "()[]{}"输出: true示例 3:输入: "(]"输出: f...原创 2018-08-17 10:01:39 · 282 阅读 · 0 评论 -
JAVA数据结构之链表【无dummyNode】
LinkedListNode结点data域下个结点的指向Node结点代码private class Node { public E e; public Node next; public Node(E e, Node next) { this.e = e; this.next = next; }...原创 2018-08-17 16:52:56 · 214 阅读 · 0 评论 -
JAVA数据结构之链表【有dummyNode】
LinkedListNode结点data域下个结点的指向Node结点代码private class Node { public E e; public Node next; public Node(E e, Node next) { this.e = e; this.next = next; }...原创 2018-08-17 17:05:07 · 1539 阅读 · 0 评论 -
JAVA数据结构之链表实现栈
链表实现栈接口public interface Stack &lt;E&gt;{ int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}需要用到,博客之前写的链表【有dummyNode】的数据结构,直接复制就行链表实现public cl...原创 2018-08-17 17:17:06 · 224 阅读 · 0 评论 -
JAVA数据结构之链表实现队列
用链表实现队列接口public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront();}链表实现代码public class LinkedListQueue<E&...原创 2018-08-17 17:40:12 · 163 阅读 · 0 评论 -
JAVA数据结构之二分搜索树【BST】
定义子节点类型public class Node{ public E e; public Node left,right; public Node(E e){ this.e = e; right = null; left = null; }}BST的API需求 增:add删:remove r...原创 2018-08-20 14:06:45 · 117 阅读 · 0 评论 -
JAVA数据结构之哈希表
hash表的优缺点hash表比树形结构快的原因,表的是位置是计算出来的通过hash函数,满足随机插入的结构。但是在有该优点的情况下,需要考虑哈希冲突 本例结构中采用链地址法【在hash表的每一个表单元,都是链表结构,发生冲突的元素,自动加入链表】 在jdk8以前采用的是链表解决,在jdk8之后,在处理哈希冲突时,先采用链表,当链表中size大于8时,转化为树形结构,...原创 2018-09-02 10:50:21 · 2487 阅读 · 0 评论