Zicon Blog

知识不负我,我亦不负ACG

数据结构最优解之栈与队列Lab2

两个栈构成的队列

“程序设计中被广泛使用的两种线性结构“ 前言 书接上回,跟着给大家介绍第二题。 正文 题目:两个栈组成队列 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。 这个题目初看之下很简单,稍微接触过数据结构的读者都知道对于栈,它是先进后出,而对于队列,它是先进先出。 所以用两个栈实现一个队列最直观的思路就是:设这两个栈分别为s1,s2,始终把...

在Cygwin下Hadoop安装经历

正式说明Hadoop的安装咯

“偷懒的最后一步” 前言 之前已经通过 Windows下Cygwin的安装经历 搞定了Cygwin的安装、配置了,接下来就是正式安装Hadoop了。 正文 第一步准备 解压Hadoop,放到Cygwin的/home目录下。 Hadoop的配置 需要修改hadoop的配置文件,它们位于conf子目录下,分别是hadoop-env.sh、core-site.xml、hd...

Windows下Cygwin安装经历

Windows下想不安装虚拟机而使用Hadoop吗

“学会偷懒哈哈” 前言 Zicon初次接触Hadoop,由于机子跑虚拟机实在太卡了,而且网络连接上又出现了这样那样的问题。所以,决定在win7下用cygwin来搭建和学习hadoop。 在这里先总结下自己的配置过程。 正文 第一步准备 自行前往官网下载JDK、Cygwin、Hadoop。 值得注意的是,Hadoop要下载稳定版,即命名格式带tar,如:hadoop-...

设计模式——单例模式分析

最后一个创建型模式了呢

“真相只有一个” 前言 单例模式确保类只有一个实例,而且自行实例化并向系统提供这个实例。它包括以下要素: 私有的构造方法 指向自己实例的私有静态引用 以自己实例为返回值的静态的公有的方法 正文 单例模式包含以下角色: 单例类 单例类内部只生成一个实例,提供一个静态的工厂方法,让客户可以使用它的唯一实例。构造函数私有。 单例模式的优缺点 优点 ...

设计模式——原型模式分析

通过克隆复制多个相同的对象

“你猜我是本体呢,还是本体呢” 前言 需要多次创建同一类型的对象时,可以通过原型模式复制出相同的对象。 其核心是原型类,Prototype类需具备两个条件: 实现Cloneable接口。Java有个Cloneable接口,实现了此接口的类才能被拷贝,否则会抛出异常。 重写Object的clone方法。Object类clone方法的作用域为protected类型,一般...

设计模式——建造者模式分析

GoF最复杂的创建型模式

“将复杂对象的构建与表示分离” 前言 建造者模式针对复杂对象,将复杂对象构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 正文 建造者模式包含以下角色: 抽象建造者 抽象建造者为对象的各个属性指定抽象接口,并声明属性的build()与get()方法。 具体建造者 实现了抽象建造者的接口,实现属性的具体build()与get()方法,定义并明确其创建的复杂...

数据结构最优解之栈与队列Lab1

一个有getMin功能的栈

“程序设计中被广泛使用的两种线性结构“ 前言 首先,简单地介绍一下栈与队列。 从”数据结构”的角度看,它们都是线性结构,即数据元素之间的关系相同。但它们是完全不同的数据类型。除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的”限定”。 栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。 队列(Queue)是限定只能在表的一端进行插入和在另一端...

算法之堆排序

父与子

“二叉堆” 前言 最大堆:根结点的键值是所有堆结点键值中最大者,且每个结点的值都比其孩子的值大。 最小堆:根结点的键值是所有堆结点键值中最小者,且每个结点的值都比其孩子的值小。 正文 生成最大堆:最大堆通常都是一棵完全二叉树,因此我们使用数组的形式来存储最大堆的值,父结点跟子结点的关系如下: heap[lchild] = heap[father * 2 + 1]; h...

算法基础之插入排序

有序数组序列插入数后仍然有序

“算法基础知识” 前言 排序算法 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据序列。 基本思想是每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 插入排序算法对于少量元素的排序是一个有效的算法。 可以将其看作是大家排序一手扑克牌,开始时我们的左手为空,然后每次从牌堆里拿...

算法粗略见解

算法只是工具,重点在于设计算法的人

“算法粗略见解” 前言 什么是算法?: 算法是把输入转换成输出的计算步骤的一个序列,是用于求解良说明的计算问题的工具; 注意,若对每个输入实例,算法都以正确的输出停机,则称算法是正确的,并称算法解决的给定的计算问题。 注意,不正确的算法只要其错误率可控,有时可能是有用的。 正文 算法的设计标准:效率、时间与空间复杂度 算法问题的特征 存在多个候...