数据结构
文章平均质量分 55
你得支棱起来呀-
如果想私聊博主帮忙解决问题,麻烦先关注一下,博主看到私信后且懂的话,一定帮忙解决。
展开
-
PriorityQueue小根堆和大根堆里的方法
PriorityQueue的peek()和element()操作是常数时间,add(), offer(), 无参数的remove()以及poll()方法的时间复杂度都是log(N)。1、添加 add()和offer()add(E e)和offer(E e)的语义相同,都是向优先队列中插入元素,只是Queue接口规定二者对插入失败时的处理不同,前者在插入失败时抛出异常,后则则会返回false。对于PriorityQueue这两个方法其实没什么差别。2、获取队首元素 element()和peek()转载 2021-04-12 20:07:10 · 298 阅读 · 0 评论 -
JAVA调用小根堆和大根堆,求一组数中的第K小和第K大
小根堆就是小顶堆,大根堆就是大顶堆,一个意思。类型可以是Queue,也可以是PriorityQueue,这里直接用Queue也行新建一个小根堆Queue<Integer>A=new PriorityQueue<>();新建一个大根堆Queue<Integer> maxHeap = new PriorityQueue<>(()-> (y-x));1、求出一个数组中第K大的数解法思路:用小根堆,根堆有k个节点,最小的节点.原创 2021-04-12 19:42:34 · 411 阅读 · 0 评论 -
Trie树基本原理(字典树,单词查找树)
https://blog.csdn.net/forever_dreams/article/details/81009580【介绍】Trie树是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。(这是从百度上找来的,本蒟蒻连哈希树是什么都不知道)【基本思想】那么首先,Trie树长什么样子呢?上图.转载 2021-04-01 11:10:33 · 175 阅读 · 0 评论 -
索引是什么?它的本质是什么?详细解剖
以前以为的索引,就是在表中的一个主键列,比如id,但其实如果id在没有加特殊意义的情况下,id列就仅仅是一个列,如select student where id = 1001;其实和select student where name = "小明";效率并没有差多少,本质上都需要遍历,而且是全表遍历完,找到where后面对应的条件的行进行返回。而加了主键的话,也只是加了一种约束,即id这一列是非空且唯一的,就是不能有其他学生的id相同,也不能为空,这就是主键约束。说了那么多,那究竟什么是索引呢,索引它是.原创 2021-03-02 10:40:05 · 2000 阅读 · 0 评论 -
可视化学习数据结构和算法的网站(免费可用)
数据结构可视化https://www.cs.usfca.edu/~galles/visualization/Algorithms.html原创 2021-08-01 22:27:32 · 263 阅读 · 0 评论 -
二叉树的前序遍历、中序遍历和后序遍历Java实现,附带小白讲解
先创建二叉树的节点类public class Node{ Node leftChild; Node rightChild; int data; public Node(Node leftChild, Node rightChild, int data){ this.leftChild = leftChild; this.rightChild = rightChild; this.data = data;原创 2021-01-13 11:09:43 · 133 阅读 · 0 评论 -
List的相关知识点(ArrayList()和LinkedList())
ListList是最基础的一种集合:它是一种有序列表。List的行为和数组几乎完全相同:List内部按照放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置,List的索引和数组一样,从0开始。在实际应用中,需要增删元素的有序列表,我们使用最多的是ArrayList。实际上,ArrayList在内部使用了数组来存储所有元素。例如,一个ArrayList拥有5个元素,实际数组大小为6(即有一个空位)ArrayList把添加和删除的操作封装起来,让我们操作List类似于操作数组,却不用关原创 2021-01-12 17:00:01 · 154 阅读 · 0 评论 -
有关Map的知识点(HashMap()和TreeMap())
List和MapList是一种顺序列表,如果有一个存储学生Student实例的List,要在List中根据name查找某个指定的Student的分数,应该怎么办?最简单的方法是遍历List并判断name是否相等,然后返回指定元素:List<Student> list = new ArrayList<>();Student target = null;for (Student s : list) { //遍历list中的Student对象,每次遍历的值赋值...原创 2021-01-12 16:27:23 · 108 阅读 · 0 评论 -
B树、B-树、B树
注意:B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树。所以B-树就是B树,也就是只存在 B树 和 B+树。B树中所有节点的孩子节点数中的最大值称为B树的阶,记为M(重点),而二叉树就是每个节点的子节点最多为2,所以称为二叉树。B树(B-树)一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每..原创 2020-06-03 19:45:08 · 353 阅读 · 1 评论 -
JAVA实现一个单链表
JAVA构建一个单链表public class Node { public Object data; //存放节点值 public Node next; //后继节点的引用 ,将data,next定义为public类型,就不需要get,set方法了 public Node(){ ...原创 2020-04-25 16:44:56 · 235 阅读 · 0 评论 -
两个栈实现一个队列、两个队列实现一个栈
1、两个栈实现一个队列template<typename T> class CQueue{public: CQueue(void); ~CQueue(void); void appendTail(const T& node); T deleteHead(); private: stack<T> stack1; stack<T>...原创 2020-04-22 20:32:16 · 100 阅读 · 0 评论 -
java构建二叉树
一、构建节点为了方便引用而不用专门通过set和get方法引用,我们直接将变量都定义为public的package two_tree;public class Node { public long data; public Node leftChild; public Node rightChild; /* * 构造方法 */ public Node(long...原创 2020-04-12 12:34:04 · 2096 阅读 · 1 评论 -
二叉树
1. 满二叉树,完全二叉树和二叉查找树1.1 满二叉树定义:高度为h,并且由2{h}–1个结点的二叉树,被称为满二叉树。1.2 完全二叉树定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上。这样的二叉树称为完全二叉树。特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。显然,一棵满二叉树必定是一棵完全...原创 2020-04-12 11:51:41 · 63 阅读 · 0 评论 -
单链表反转原理(执行步骤)
单链表反转原理(执行步骤)Node reverseList(Node H){ if (H == NULL || H.next == NULL) //链表为空或者仅1个数直接返回 return H; Node p = H, newH = NULL; while (p != NULL) //一直迭代到链尾 ...原创 2020-04-11 17:03:11 · 694 阅读 · 0 评论 -
数据结构
一、算法复杂度常见的时间复杂度常见的时间复杂度大小分别包括下面几种:1、常数阶2、线性阶3、平方阶4、对数阶二、链表1、单链表2、循环链表3、双向链表4、双向循环链表5、插入和删除节点...原创 2020-04-11 16:17:20 · 101 阅读 · 0 评论