![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
不升级的小怪兽
这个作者很懒,什么都没留下…
展开
-
单链表的JAVA实现(基于虚拟头节点实现了添加,更新,查找,删除元素)
public class LinkedList<E> { private class Node { public E e; public Node next; public Node(E e, Node next) { this.e = e; this.next = next; } public Node(E e) { this(e, n...原创 2018-12-24 10:23:21 · 2974 阅读 · 1 评论 -
各种数据结构的时间复杂度分析
对于同一个数据结构来说,底层实现的不同往往会呈现出不同的时间复杂度。以数组为例:. 普通数组实现 顺序数组实现 二分搜索树(平衡)插入 O(1) O(n) O(logn)查找 O(n) O(logn) O(logn)删除 O(n) O(n) O(logn)文章目录1. 动态数组2. 数组栈3. 数组队列4....转载 2019-08-28 09:51:20 · 2258 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
原文链接:https://blog.csdn.net/v_JULY_v/article/details/6279498第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文...转载 2019-08-28 09:47:42 · 115 阅读 · 0 评论 -
AVL树,红黑树,Tire树,二叉排序树,B树总结对比
1.二叉排序树二叉排序树又称二叉查找树(二叉搜索树),它或是一棵空的二叉树,或是具有下列性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于根节点的值若它的右子树不空,则右子树上所有节点的值均大于根节点的值它的左右子树也都是二叉排序树如果二叉排序树是平衡的,则n个节点的二叉排序树的高度为,其查找效率为,近似于折半查找。如果二叉排序树完全不平衡,则其深度可达到n,查找效率为O(n...原创 2019-08-28 09:53:20 · 442 阅读 · 0 评论 -
B树、B+树与B*树
B树的定义B树(B-tree)是对2-3树数据结构的扩展,又称为多路平衡查找树,它的一个节点可以拥有多于2个子节点的二叉查找树。与自平衡二叉查找树不同, B树是一种自平衡树数据结构,可以保持数据排序,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构 B树针对读写大数据块的系统进行了优化。B树的算法减少定位记录时所经历的中间过程,从...转载 2019-07-05 21:52:40 · 179 阅读 · 0 评论 -
二叉树
原文:https://blog.csdn.net/baiye_xing/article/details/76838886二叉树的定义 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”,左子树和右子树同时也是二叉树。二叉树的子树有左右之分,并且次序不能任意颠倒。二叉树是递归定义的,所以一般二叉树的相关题目也都可以使用递归的思想来解决,当然也有一些可以...转载 2019-07-05 08:41:20 · 105 阅读 · 0 评论 -
BFS和DFS算法学习总结
BFS:这是一种基于队列这种数据结构的搜索方式,它的特点是由每一个状态可以扩展出许多状态,然后再以此扩展,直到找到目标状态或者队列中头尾指针相遇,即队列中所有状态都已处理完毕。广度优先搜索(BFS)有一个有向图如图a 图a广度优先搜索的策略是:从起始点开始遍...原创 2019-07-08 09:33:40 · 767 阅读 · 0 评论 -
快速排序Java实现
快速排序的基本思想:数组中的每个元素与基准值比较,数组中比基准值小的放在基准值的左边,形成左部;大的放在右边,形成右部;接下来将左部和右部分别递归地执行上面的过程:选基准值,小的放在左边,大的放在右边,直到排序结束。时间复杂度:O(nlogn) 空间复杂度:O(nlogn) 稳定性:不稳定public class QuickSort { public int getMi...原创 2019-01-01 14:46:06 · 170 阅读 · 0 评论 -
冒泡排序Java实现
交换排序的基本思想是,比较两个记录的大小,如果这两个记录的大小出现逆序,则交换这两个记录,这样将较小的记录向序列前部移动,较大的记录向序列后部移动。首先我们来看交换排序中的第一种排序---冒泡排序,首先将第一个记录的键值和第二个键值进行比较,若为逆序,,则将这两个记录交换,然后继续比较第二个和第三个记录的大小,依此类推,直到完成第n-1个记录和第n个记录的大小比较交换为止,上述过程称为第一趟冒泡,...原创 2018-12-25 10:09:56 · 119 阅读 · 0 评论 -
简单选择排序算法JAVA实现
简单选择排序的过程为:第1次,从n个记录中找出关键码最小的记录与第1个记录交换,第2次,,从第2个记录开始的n-1个记录中再选出关键码最小的记录与第2个记录交换;如此,第i次,则从第i个记录开始的n-i+1个记录中选出关键码最小的记录与第i个记录交换,直到整个序列按关键码有序。例:3,1,4,2第1次·:1,3,4,2第2次:1,2,4,3第3次:1,2,3,4 时间复杂度...原创 2018-12-25 09:38:40 · 1913 阅读 · 0 评论 -
栈的java实现(基于jdk库的链表)
public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();} public class LinkedListStack<E> implements Stack<E> { private Link...原创 2018-12-24 10:58:26 · 291 阅读 · 0 评论 -
栈的java实现(基于自定义的链表)
自定义的链表代码在我的博客《单链表的JAVA实现(基于虚拟头节点实现了添加,更新,查找,删除元素)》public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}public class LinkedListStack&l...原创 2018-12-24 10:54:51 · 143 阅读 · 0 评论 -
八大数据结构分类
原文链接:https://blog.csdn.net/yeyazhishang/article/details/82353846本文目录:数据结构分类1、数组2、栈3、队列4、链表5、树6、散列表7、堆8、图数据结构分类数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表...转载 2019-08-28 09:57:22 · 163 阅读 · 0 评论