
算法
算法
z13730736890
专注游戏服务器开发
展开
-
3.BST
核心逻辑 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作. 适用范围 插入一原创 2021-06-10 17:47:01 · 137 阅读 · 0 评论 -
2.LRU
核心逻辑 算法复杂度 O(1) 为了实现O(1)的算法复杂度,采用双向链表,有序. 最长时间未调用的数据放置在末位,超过size直接移调. 插入数据直接放在头节点上面. 哈希表+双向链表实现. package com.zby.calc; import com.zby.calc.A_BinaryHeap.Student; import java.util.HashMap; import java.util.Map; /** * * LRU ==> Least Recently Used 低原创 2021-06-10 16:03:21 · 153 阅读 · 0 评论 -
1.二叉堆---C.二叉堆的升级使用,延时队列--DelayQueue
延时队列 插入时带时间,到时间可取出,比较典型的的二叉堆使用场景–每次获取只需头节点,插入波动大,无需查看排序. 此处队列是线程安全的.全程覆盖读写锁. 放入节点 /** * Inserts the specified element into this delay queue. * * @param e the element to add * @return {@code true} * @throws NullPointerException原创 2021-06-10 14:55:58 · 132 阅读 · 0 评论 -
1.二叉堆---B.java中的数据结构---PriorityQueue
上一章写了一个基础优先级队列的实现,现在看下Doug Lea大神的源码. PriorityQueue是一个无界队列,无界的实现采用数组扩张 /** * Increases the capacity of the array. * * @param minCapacity the desired minimum capacity */ private void grow(int minCapacity) { int oldCapacity原创 2021-06-09 19:43:26 · 130 阅读 · 0 评论 -
1.二叉堆---A.基础优先级队列
定义: 二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。 使用范围: 读写算法复杂度都是O(logn),是一种相对平衡的数据结构,用于优先级队列,保证头结点最优,之后节点无序,每次获取之后执行树深度重排. 直接上代码–二叉堆实现 package com.zby.calc; import java.util.Random; /**原创 2021-06-09 17:59:34 · 104 阅读 · 0 评论