RebornL Blog

Thinking will not overcome fear but action will.

《数据结构与算法经典问题解析》--第七章

堆(未完成)

优先队列和堆 堆 堆是一颗具有特定性质的二叉树,基本要求是所有结点的值必须大于或等于(或者小于或等于)其孩子节点的值,另外树的高度h大于0,所有结点都处于第h或h-1层时,即堆也是一颗完全二叉树。 最大堆:结点的值必须大于或等于其孩子节点的值 最小堆:节点的值必须小于或等于其孩子节点的值 二叉堆 每个结点最多有两个孩子节点。 储存格式,由于堆在形式上是一颗完全二叉树,...

《数据结构与算法经典问题解析》--第六章

树 数是一种典型的非线性的数据存储结构,与链表类似,但却不同,因为树的一个节点可以指向多个节点。 部分术语 叶子结点:没有孩子节点的节点叫做叶子节点 节点的深度:从根节点到该节点的路径长度 节点的高度:是指从该结点到最深结点的路径长度 斜树:如果树中除了叶子节点外,其余每一节点只有一个孩子节点,这种树称作斜树。 ...

《数据结构与算法经典问题解析》--第五章

队列

队列 队列同样是一种存储数据的线性表,只允许在队尾插入元素,在队首删除元素,是一种先进先出(FIFO)的线性表。 专有名词概念: 入队(EnQueue):在队列中插入一个元素 出队(DeQueue):在队列中删除一个元素 下溢(underflow):对一个空队列执行出队操作 溢出(overflow):对一个满队列...

《数据结构与算法经典问题解析》--第四章

栈 栈是一种线性表结构,只允许在表的一段(栈顶,top)插入和删除元素,因此栈是一种后进先出(LIFO)的线性表。 专有名词概念: 入栈(push):在栈中插入一个元素 出栈(pop):在栈顶删除元素 下溢(underflow):在空栈中执行删除操作 溢出(overflow):试图对一个满栈执行入栈操作 ...

《数据结构与算法经典问题解析》--第三章

链表

第三章:链表 概述 链表是一种存储数据集合的数据结构,相邻元素之间通过指针连接,链表长度不固定,空间是按需分配。 链表的主要操作是插入和删除操作,辅助操作有删除链表,计数,查找。 链表与数组 数组: 优点 简单易用 访问元素快(常数时间) 缺点 大小固定 需要分配一个连续空间块 ...

《数据结构与算法经典问题解析》--第一章和第二章

第一章和第二章简介

第一章 三种渐进表示法: 大O表示法:为给定的算法定义了严格的上限。 Ω表示法:为给定的算法定义了严格的下界。 Θ表示法:决定给定算法的时间增长率的上界和下界是否相同,可以看成算法的平均运行时间。 第二章 递归:任何调用自身的函数称为递归。 斐波那契数列、阶乘 归并排序、快速排序 二分查找 树的遍历和...

数据结构--树

二叉树

树 二叉查找树 将二叉树变成二叉查找树,对于树种每个节点X,它的左子树中所有相的值小于X中的值,右子树的所有项的值大于X中的值。 二叉查找树的平均深度为O(logN),所以不必担心栈内存耗尽。 BinaryNode为BinarySearchTree的内部嵌套类。 private static class BinaryNode<AnyType> { A...

计算机操作系统简记

进程和内存

操作系统 进程管理 基本特征: 并发:是指在一段时间内能同时运行多个程序,对比并行则是指同一时刻能运行多个指令。并行需要硬件支持,如多流水线或多处理器。操作系统引入进程和线程概念,使得程序能够并发运行。 共享:互斥共享和同时共享。临界资源是互斥共享,同一时间只允许一个进程访问,需要有同步机制对临界资源进行访问。 虚拟:把一个物理实体转换为多个逻辑实体。主要分为两种虚拟技术...

排序算法(Java版)

排序算法(Java版)

排序算法(Java版) 备注:以下动图来自于一像素的排序算法 冒泡排序 public static void bubbleSort(int[] arr) { if(arr.length == null || arr.length == 0) return; int len = arr.length; for(int i = 0; i &...

Java基础面试题记录

1. 为什么Java只有值传递? Java没有指针这种说法,而且即使传递对象也并非所谓按引用传递,而是把栈中指向堆中某个地址值传递给参数,也依旧是值传递。对于基本数据类则和其他语言一样。 example: public class Test { public static void main(String[] args) { // TODO Auto-generated met...