摘要: 1. 什么是红黑树 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树。但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快;即当树的高度较高(甚至一种极端情况是树变成了1条链)时,这些集合操作并不比在链表上执行的快。 于是我们需要构建出一种“平衡”的二叉搜索树。 红黑树(red-black tree)正是其中的一种。它... 阅读全文
posted @ 2015-10-29 22:47 学数学的程序猿 阅读(9257) 评论(1) 推荐(1) 编辑
摘要: 1. 引言 前些天数据结构课讲到了二叉树。学校使用的教材是《数据结构(Java版)(第4版,叶核亚)》。总觉得书中给出的二叉树(包括之前学的线性表)的实现方式不太“优雅”(面向对象),比如线性表的链式存储和实现一节中给出的SinglyList的插入方法:public Node insert(int i, T t);比如在二叉树的链式存储和实现的插入方法:public BinaryNode... 阅读全文
posted @ 2015-10-20 18:19 学数学的程序猿 阅读(1062) 评论(0) 推荐(0) 编辑
摘要: 1. 名称 1. 名称 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。单例模式是一种对象创建型模式。 2. 问题 2. 问题 在有些时候,对于某个类,我们无需创建多个它的实例。站在资源利用的角度讲,单例能够节省系统 阅读全文
posted @ 2015-10-19 21:10 学数学的程序猿 阅读(946) 评论(3) 推荐(0) 编辑
摘要: 1. 引言 1. 引言 从大一开始学习编程,到如今也已经有两年了。从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具。学习过程中也无意识的了解了一些所谓的设计模式,如今打算系统的学习。学习以书《设计模式的艺术——软件开发人员内功修炼之道/刘伟著》为主。 所 阅读全文
posted @ 2015-10-15 14:18 学数学的程序猿 阅读(2665) 评论(0) 推荐(0) 编辑
摘要: 1. 什么是二叉搜索树 顾名思义,二叉搜索树是以一棵二叉树来组织的。如下图,这样的一棵树可以使用一个链表数据结构来表示,其中的每一个节点是一个对象。除了key和卫星数据之外,每个节点还包含属性left(左孩子)、right(右孩子)、和p(双亲)(若不存在,则值为NIL)。 二叉搜索树中的关键字总是... 阅读全文
posted @ 2015-10-10 20:10 学数学的程序猿 阅读(5489) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 1. 引言 在Windows上,经常需要做一些重复的工作。比如在不同的工作场所需要切换不同的ip;比如有时需要对一堆文件按1~n进行重命名;再比如我们需要删除一大堆文件,这些文件名字都差不多,但不在同一个目录呆着…第一次可以忍忍,手动完成了,但次数多了,将会觉得特麻烦和无聊;于是开始用某 阅读全文
posted @ 2015-10-06 15:25 学数学的程序猿 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 1. 引言 在上一篇中,我们简单的了解了爬虫的工作流程,也简单的实现了一个爬虫,并且在文末简单分析了目前存在的问题。这一篇博客将会对上一篇分析出的问题,给出改进方法。我们将从以下几个方面加以改进。 2. 改进 2. 改进 (1) Bloom Filter 我们首先利用Bloom File 阅读全文
posted @ 2015-10-05 22:01 学数学的程序猿 阅读(1903) 评论(2) 推荐(9) 编辑
摘要: 1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作。散列表(hash table)是实现字典操作的一种有效的数据结构。2. 直接寻址表 在介绍散列表之前,我们先介绍直接寻址表。 当关键字的全域U(关键字的范围)比较小时,直接寻址是一种简单而有效的技... 阅读全文
posted @ 2015-10-03 12:14 学数学的程序猿 阅读(6404) 评论(0) 推荐(1) 编辑
摘要: 1. 引言 1. 引言 从今天开始系统的学习网络爬虫。写这篇博客的目的在于,一来记录下自己的学习过程;二来希望可以给像我一样不懂爬虫但又对爬虫十分感兴趣的人带来一些帮助。 昨天去图书馆找有关爬虫书籍,居然寥寥无几,且都是泛泛而谈。之后上某宝淘来淘去,只找到一本相关书籍《自己动手写网络爬虫》,虽然在某 阅读全文
posted @ 2015-10-01 23:24 学数学的程序猿 阅读(6537) 评论(11) 推荐(23) 编辑
摘要: 1. 引言 这一篇博文主要介绍链表(linked list),指针和对象的实现,以及有根树的表示。 2. 链表(linked list) (1) 链表介绍 我们在上一篇中提过,栈与队列在存储(物理)结构上都可以用数组和链表来实现。数组和链表都是线性存储结构,其中的各元素逻辑上都是按顺序排列的。它们的不同点在于:数组的线性顺序由数组的下标决定;而链表的顺... 阅读全文
posted @ 2015-09-29 10:44 学数学的程序猿 阅读(1713) 评论(0) 推荐(1) 编辑