2017年3月28日

拓扑排序

摘要: 拓扑排序:有向图中,使得一个序列中只有前边的节点指向后边的节点;拓扑排序唯一解:当一个DAG的任何两个顶点都存在确定的先后关系,该DAG的拓扑排序的解是唯一的;保证BFS队列中入度为0的节点有且只有一个; 阅读全文

posted @ 2017-03-28 22:34 yzwall 阅读(106) 评论(0) 推荐(0) 编辑

线性表基本概念

摘要: 线性表/线性结构线性表(linear list)是若干个数据元素的有限序列,每个数据元素可由若干数据项组成;线性表的特点有:在数据元素的非空有限集中,存在唯一的称之为“第一个”和“最后一个”元素;除“第一个”元素(first/front)外,每一个元素有且仅有一个直接前驱(predecessor);除“最后一个”元素(last/rear)外,每一个元素有且仅有一个直接后继(successsirr)... 阅读全文

posted @ 2017-03-28 22:27 yzwall 阅读(785) 评论(0) 推荐(0) 编辑

二叉树备忘

摘要: 二叉树基本概念及性质二叉树(binary tree)是一棵树,每个结点最多有两个儿子(0/1/2),本质上就是图(graph);根据定义,二叉树有以下五种形态:二叉树的特点如下图:特殊的二叉树有斜二叉树,满二叉树和完全二叉树,斜二叉树:每一层只有一个结点,每个结点仅有左子树的称为左斜树,反之称为右斜树;满二叉树:所有的分支结点都有左子树和右子树,所有的叶结点都处在同一层;完全二叉树:树中的结点按层... 阅读全文

posted @ 2017-03-28 22:22 yzwall 阅读(391) 评论(0) 推荐(0) 编辑

二叉堆 & 优先级队列

摘要: 优先级队列 实现方式:只需要查找极值元,不必维护所有元素之间的全序关系,偏序即可。二叉堆/堆结构&性质完全二叉树重要性质: 对于结点总数为N的完全二叉树,结点按层顺序编号(从第1层到最后一层,每层从左到右),对于任一结点k: 当k=1时,结点k为树的根,无父结点;当k>1时,其父结点为[k/2]; 当2k=N时,结点k的左孩子结点为2k; 当2k>N时,结点k无左孩子... 阅读全文

posted @ 2017-03-28 22:20 yzwall 阅读(581) 评论(0) 推荐(0) 编辑

Java运行数据区/堆/栈

摘要: JVM Runtime Data Area(运行数据区)根据《Java虚拟机规范(Java SE 7版)》规定,JVM所管理的内存包括:线程共享:堆区,方法区和运行常量池(位于方法区);线程私有:程序计数器,栈区,本地方法栈;PC Register(程序计数器)程序计数器与线程生命周期保持一致,存储当前线程执行的方法字节码指令地址(如果是native方法,程序计数器存储值为undefined),解... 阅读全文

posted @ 2017-03-28 22:17 yzwall 阅读(220) 评论(0) 推荐(0) 编辑

Java垃圾回收机制

摘要: 判断对象是否存活引用计数法:实现方式:为每个对象创建一个私有的引用计数器,当引用计数器为0时,标记为可被回收对象,存在问题:无法解决对象之间相互引用的问题。当两个可被回收对象彼此引用时,引用计数器永远不为0,极易发生内存泄露;可达性分析法(Reachability Analysis)/根追踪算法(GC Roots Tracing)实现方式:通过一系列称为“GC Roots”的对象作为起始点,沿着引... 阅读全文

posted @ 2017-03-28 22:16 yzwall 阅读(1277) 评论(0) 推荐(0) 编辑

Java集合基础

摘要: Collection/集合Collection与CollectionsCollection是所有集合类的根接口;Collections是提供集合操作的工具类;集合类和数组不同,数组元素可以为基本数据类型值/对象引用;集合元素只能为对象引用;Java的集合类由Collection接口和Map接口派生,Set代表无序集合,无序不可重复;List代表有序集合,有序可重复;Map集合存储键值对;toArr... 阅读全文

posted @ 2017-03-28 22:15 yzwall 阅读(12511) 评论(0) 推荐(2) 编辑

Java面向对象-抽象类/接口类/内部类

摘要: 抽象类/抽象方法抽象类抽象类除了定义抽象方法外,与普通类一样可定义成员变量/方法,由于抽象类无法实例化,因此只具有语法意义;可定义static变量/方法,可通过类名直接访问;可继承/实现其他类/接口;子类继承抽象父类,子类为非抽象类:强制重写抽象父类中的所有抽象方法,继承其他成员变量与成员方法;子类为抽象类:不必强制实现抽象父类中的抽象方法,继承其他成员变量与成员方法,由于抽象子类也无法实例化,因... 阅读全文

posted @ 2017-03-28 22:14 yzwall 阅读(796) 评论(0) 推荐(0) 编辑

Java基础 & 基本数据类型 & String类

摘要: Java发展1991年4月,James Gosling博士领导启动绿色计划,开发出Oak语言;1995年5月23日,Oak语言改名为Java,发布Java1.0版,第一次提出"write once, run anywhere"口号;2006年12月11日,Sun公司用Java SE,Java EE和Java ME分别替代J2SE,J2EE和J2ME;2009年4月20日,Oracle公司正式收购S... 阅读全文

posted @ 2017-03-28 22:13 yzwall 阅读(636) 评论(0) 推荐(0) 编辑

Java面向对象-基本/传参/引用/访问控制/构造器

摘要: Java面向对象思想面向对象语言三大基本特征:封装(数据抽象),继承,多态;封装的目的在于绝对不允许类中方法直接访问其它类的实例域,程序仅通过对象的方法与对象的数据进行交互;封装赋予”对象“黑盒特征,提高重用性和可靠性;对象变量本质是指向一个对象/实例的引用(reference),Java通过引用操作对象;Java通过new在堆上创建对象,对象变量实质是指向对应堆对象的引用;一个对象引用可以指向0... 阅读全文

posted @ 2017-03-28 22:12 yzwall 阅读(247) 评论(0) 推荐(0) 编辑

Java面向对象-继承/重写/多态

摘要: 继承Java通过extends关键字实现继承,每个类至多有一个直接父类(抛弃了C++多继承,私有继承和保护继承);子类无法继承父类private成员/,static变量/方法;针对父类private方法,子类同名方法属于自定义方法,不存在方法重写;重写/覆盖(@Override)子类方法重写规则方法签名必须想同;重写方法返回值类型/抛出异常类型 = 父类;重写方法类型 = 父类(同为static方... 阅读全文

posted @ 2017-03-28 22:11 yzwall 阅读(387) 评论(0) 推荐(0) 编辑

二叉树遍历&分治

摘要: 二叉树&分治二叉树的结构形式天生具有使用分治法的特征,遇到二叉树问题优先试用分治法;二叉树分治算法复杂度:T(n) = 2(T(n/2) + O(1));O(T(n)) = O(n);二叉树遍历:按照既定次序,对二叉树结点各访问一次而且仅一次。★ 二叉树非递归遍历思想:根据栈先入后出的特点,在“顺序”前面的后入栈,在“顺序”后面的先入栈;二叉树前序遍历(经典递归 & 分治法 & 非递归)前序遍历-... 阅读全文

posted @ 2017-03-28 22:06 yzwall 阅读(943) 评论(0) 推荐(0) 编辑

导航