10 2017 档案
摘要:快速算法同样是非常重要的,用我们教授的话,这是一个里程碑的算法。虽然我也不知道为什么。 我们还是首先来看看快速排序的思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达
阅读全文
摘要:在《algorithm》中,作者单独讲mergesort作为一个小节,可以看出它的重要程度。 首先来看一下归并排序的运用场景是怎样的:将两个已排序列进行排列。 主要的思想便是:比较a[i]和b[j]的大小,若a[i]≤b[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;
阅读全文
摘要:其实基本排序并不是一个排序方法,而是集中基本的排序方法的定位,我使用这个名字也是因为《algorithm》书中将下面几种排序方法放在一章中,而这一章节的名字成为基本排序(elementary sort)。 书中包括三种排序方法:选择排序(selection sort)、插入排序(insertion
阅读全文
摘要:接着上一篇文章的内容,这篇我们将阐述hashmap在jdk1.8中的扩容机制。 jdk1.8中对hashmap有着非常棒的扩容机制,我们在上一篇文章提到了当链表长度大于某个值的时候,hashmap中的链表会变成红黑树结构,但是实际上真的是这样么?我们来看一下树化的函数是怎样进行的: 我们从第一个判断
阅读全文
摘要:HashMap可以说是java中最常见的几种集合了。 在了解HashMap前我们要先了解Object的两个方法:Equals和hashCode() 首先我们来看一下object内的源码是怎样实现的: hashcode(): 但是这个方法没有实现!注意上面这句话: 这里我将jdk源码中所有相关信息都给
阅读全文
摘要:上篇文章我们学习了二叉排序树,而二叉排序树的性能取决于二叉树的层数: 最好的情况是 O(logN),存在于完全二叉排序树情况下,其访问性能近似于折半查找; 最差时候会是 O(N),比如插入的元素是有序的,生成的二叉排序树就是一个链表,这种情况下,需要遍历全部元素才行 为了改变二叉树的不足,我们开始使
阅读全文
摘要:我们知道二分查找可以缩短查找的时间和复杂度,但是二分查找的要求是序列必须是有序的,所以我们引用了二分排序树 二叉排序树,又称二叉查找树、二叉搜索树、B树。 二叉树具有以下独特的性质: 若左子树不空,则左子树上所有的节点的值均小于根节点。 若右子树不空,则右子树上所有的节点的值均小于或等于根节点。 左
阅读全文
摘要:说句老实话,二叉树应该是一个很简单的数据结构,但是我在实现的时候碰到了极大的问题。最主要的就是对二叉树各项功能的具体定义不明确,导致实现二叉树的方法的时候出现混乱。这里,我自己定义了二叉树插入、删除的方法,当然这些都是可以改变的,插入的规则也是可以根据需求进行更改的。我们学习二叉树最主要的是了解二叉
阅读全文
摘要:我们在前面介绍了很多典型的线性结构,如队列,堆栈,数组,她们至多只有一个尾节点。这是非常容易理解的。 下面我们要来介绍一个非线性结构,树(tree): 树不在是一对一的数据结构,而是一对多的非线性连接: 这里有几个规定: 图中的结构就像一棵倒过来的树,最顶部的节点就是“根节点 (root 节点)”
阅读全文
摘要:Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方
阅读全文
摘要:并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在
阅读全文
摘要:本来这一章打算探讨字节码中关于method的解析的,但是,这个周末都在看公主准则。而且在看hashmap的源码的时候,遇到了一个新的问题,所以这里先来讲一下在java中io流非常重要的一个环节,Serializable接口的理解与总结。 1)什么是java对象的序列化。 Java平台允许我们在内存中
阅读全文

浙公网安备 33010602011771号