![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Dcpnet
每个牛*的人都有一段苦*的岁月,只要像傻*一样坚持,结果终将牛*。
展开
-
java命令参数记录
java命令参数记录【注】这里只是做一个记录JavajavacJavadocjavapjar原创 2020-09-28 13:54:27 · 76 阅读 · 0 评论 -
删除有序链表中的重复节点
删除有序链表中的重复节点这道题是我在笔试 极**技 公司遇到的编程题,当时有点紧张,一直有点Bug,现在改好了,写一篇博客记录下题目:给定一个链表: 1->1->2->3->5 返回链表:2->3->5给定一个链表: 1->1->2->2->5 返回链表:5给定一个链表: 1->2->3->3->5 返回链表:1->2->5给定一个链表: 1->2->2-&...原创 2020-09-28 09:56:11 · 323 阅读 · 0 评论 -
归并排序【分治法】
归并排序我们首先要做的便是递归将数组进行拆分,拆分成 1/2个每组,然后进行排序我们分为两个函数:1.递归 /** * 归并排序 * @param array 数组 * @param start 起始点 * @param end 结束点 */ public static int[] sortArray(int[] array,int start,int end){ int middle...原创 2020-09-04 11:58:47 · 227 阅读 · 0 评论 -
类的静态域、构造器、成员域、静态属性加载顺序
类的静态域、构造器、成员域、静态属性加载顺序静态域|构造器|成员变量域加载顺序创建类Apublic class A { public A() { System.out.println("A构造器"); } { System.out.println("A成员域"); } static{ System.out.println("A静态域"); }}类B继承Apublic class B.原创 2020-09-17 10:15:47 · 253 阅读 · 0 评论 -
ArrayList 源码剖析
ArrayList初始化无参构造器public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }可以看到,在初始化的时候,进行了赋值操作,this.element 和DEFAULTCAPACITY_EMPTY_ELEMENTDATA是什么呢,从字面上来看DEFAULTCAPACITY_EMPTY_ELEMENTDATA 翻译为 默认的空容器元素。我们往上...原创 2020-09-16 22:50:54 · 93 阅读 · 0 评论 -
红黑树
红黑树内容参考 《算法导论》红黑树是一颗二叉搜索树,他的每个节点上增加了一个存储位来表示节点的颜色(RED OR BLACK)。通过对任何一条根从叶子的简单路径上各个节点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出两倍,因而是近似于平衡的。树上面的每个节点包含5个属性: color 、 key 、 left 、 right 、 p 。如果一个节点没有子节点或者父节点,则该节点相应指针属性的值为 NIL 。我们可以把这些 NIL 视为指向二叉搜索树的叶节点(外部节点) 的指针..原创 2020-09-15 14:36:32 · 114 阅读 · 0 评论 -
二维数组查找
二维数组查找题目来源 力扣在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]...原创 2020-09-12 00:40:52 · 103 阅读 · 0 评论 -
希尔排序
希尔排序希尔排序(Shell Sort) 的名称源于他的发明者 Shell ,该算法是冲破二次时间的第一批算法之一,不过,直到若干年后才证明出他的亚二时间界。平均时间复杂度:最坏时间复杂度:过程图解内部插入排序的示例算法实现public void shellSort(int[] array){ int j; for(int gap = array.length/2 ; gap > 0 ; gap/=2 ){ for(in..原创 2020-09-11 21:16:00 · 139 阅读 · 0 评论 -
快速排序
快速排序快速排序和归并排序的思想类似。在 C++ 和 Java 基本类型的排序中特别有用。时间复杂度:平均: 最坏:该算法之所以特别快,主要是由于非常精炼和高度优化的内部排序。可以将快排和堆排结合,几乎可以对所有的输入都能达到快速排序的运行时间。【快排不保证一次循环能把最小的放置到最前面】目录快速排序快速排序图解算法实现快速排序图解我们先看看快排是怎么运作的不难看出,将temp 作为一个哨兵,两个指针向对方靠拢,将小的数据放置到左...原创 2020-09-11 15:19:07 · 126 阅读 · 0 评论 -
HashMap 的底层数据结构
HashMap 的底层数据结构Entry 的 数组+链表(8之前),现在(v_8)已经变为了 Entry数组+红黑树。因为在处理冲突的时候,链表实现的方式同拉链法,如果不知道,可以看看我写的另外一篇文章 HashMap冲突处理方式里面讲述了产生冲突的原因以及解决的几种办法。在最糟糕的情况下,也就是所有Hash值都产生了冲突,那么将会产生一个非常长的链表,这时候 插入/查询都会遍历整个链表,时间复杂度貌似由回到了和链表一样的O(n),这简直是一种灾难,不是吗。底层数据结构以及合...原创 2020-09-09 15:25:48 · 163 阅读 · 0 评论 -
Hash表处理冲突的方法
Hash表处理冲突的方法内容参考《 数据结构(C语言版)》 【本篇文章使用java实现】一 开放地址法处理表达式 其中:H(Key) : 为哈希函数m : 为哈希表长: 为增量序列,三种取法(1)=1,2,3,....,m-1 ,称线性探测再散列(2)=,,,,,......,,(k<=m/2),称为二次探测再散列(3)=伪随机数序列,陈伟随即探测再散列线性探测再散列图解在产生冲突的时候,往数组后面依次查找空的进行...原创 2020-09-09 11:40:36 · 214 阅读 · 0 评论 -
查找二维矩阵
查找二维矩阵题目参考 力扣在一个二维矩阵中查找一个数,第一个想到的是一层一层遍历,如果数据够大,这样查找是否包含一个数据就很废时间,如果没有数据就会时间复杂度到达 O(M*N) M*N为数据个数当然这道题主要是针对已经排序好的二维数组来计算的。也就是每一行从左到右升序,每一行的第一个数比上一行最后一个数大。在这样的二维矩阵中查找数据,我们可以将其看作是一个一维的数组,可以使用二分查找法来进行查找数据图解下面我们用算法实现 public boolean sea..原创 2020-09-09 09:05:16 · 212 阅读 · 0 评论 -
二叉树广度遍历
二叉树广度遍历当一个数据特别大的时候,使用深度遍历会很快耗尽栈空间,这时候就需要广度遍历,使用队列一进一出,大大减少栈空间的消耗。遍历图解设计算法思路 & 图解思路通过一个 链表(LinkedList) 存储数据,以便于不确定长的添加。通过一个 Queue 存储还需要往下层遍历的节点,遍历一个删除一个,这样就不会造成栈空间的耗尽。算法图解后面的步骤原理是一样的,看动步骤之后,我们就开始实现算法,Let's Go算法创建 节点 Bina...原创 2020-09-08 14:31:34 · 336 阅读 · 0 评论 -
链表反转
链表反转题目参考反转链表目录链表反转创建节点 ListNode迭代反转步骤图解代码实现递归反转步骤图解代码实现链表的反转是非常基础的一种操作,在《剑指Offer》以及其他大部分面试书中基本都有这个简单的题目作为铺垫。首先分析旋转:链表的反转有两种方式:一种是递归;一种是迭代本篇文章就两种方式进行分析以及实现创建节点 ListNodepublic class ListNode { int val; List...原创 2020-09-07 23:54:16 · 156 阅读 · 0 评论 -
二叉查找树
二叉查找树内容参考 《数据结构与算法分析 Java语言描述》概念二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。【摘自 百度百科】有一些树也是二叉查找树的优化结果:AVL(平衡二叉树)、红黑树、Size Balanced Tree(SBT)、Treap(Tree+Heap)我们先来看一个二叉树可以发现,一个节点的左边的数据比这个节点里面..原创 2020-09-07 17:29:14 · 209 阅读 · 0 评论