guisu,程序人生。 逆水行舟,不进则退。

能干的人解决问题。智慧的人绕开问题(A clever person solves a problem. A wise person avoids it)...

二叉树的应用详解 - 数据结构

概述: 平衡树——特点:所有结点左右子树深度差≤1 排序树——特点:所有结点“左小右大 字典树——由字符串构成的二叉排序树 判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重) 带权树——特点:路径带权值(例如长度) 最优树——是带权路径长度最短的树,又称 Huffman树,用途之一...

2012-06-25 11:45:05

阅读数:28548

评论数:1

二叉树遍历 - 数据结构

1. 二叉树遍历 1.1 遍历算法: 1.先序遍历的递归算法定义:   若二叉树非空,则依次执行如下操作:   (1) 访问根结点;   (2) 遍历左子树;   (3) 遍历右子树。 2.中序遍历的递归算法定义:   若二叉树非空,则依次执行如下操...

2012-06-21 11:13:10

阅读数:4221

评论数:0

数据结构- 串的模式匹配算法:BF和 KMP算法

Brute-Force算法的思想 1.BF(Brute-Force)算法   Brute-Force算法的基本思想是: 1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。 2) 依此类...

2012-06-20 10:57:23

阅读数:28077

评论数:3

数据结构-栈和队列

1.栈 1.1 栈的定义 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示: 结论:后进先出(Last In First Out),简称为LIFO线性表。 栈的基本运算有六种: 构造空栈:InitStack(S)、 判栈...

2012-06-19 12:53:15

阅读数:94071

评论数:15

数据结构-线性表

1. 线性表:n个数据元素的有序集合。 线性表是一种常用的数据结构。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。  线性表是一个线性结构,它是...

2012-06-18 16:27:07

阅读数:38303

评论数:12

重构与模式:改善代码三部曲中的第三部

一、改善代码的三部曲    《设计模式》-> 《重构》-> 《重构与模式》。也就是设计->重构->重构出新设计。    《设计模式》主要详细说明20几种模式,为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。为设计而著。  ...

2012-06-13 10:54:07

阅读数:16763

评论数:6

php的serialize序列化和json性能测试

最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。 在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持。 在网上看到有些资料说:json_encode和json_decode比内...

2012-06-11 11:08:45

阅读数:25881

评论数:6

Java中的Map List Set等集合类

Map List Set等集合类: 一、概述 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系: +Collection 这个接口extends自 --java.lang.Iterable接口  ├+List(接口 代表有序,可重复的集合。列...

2012-06-08 12:57:41

阅读数:23295

评论数:1

深入理解java嵌套类和内部类

一、什么是嵌套类及内部类   可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种:...

2012-06-08 09:42:26

阅读数:25129

评论数:4

UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类...

2012-06-07 18:34:44

阅读数:72342

评论数:36

重构全面总结

《重构》为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式:       1)改进软件设计(整理代码)      2)提高代码质量和可读性,使软件系统更易理解和维护      3)帮助尽早的发现错误      4)提高编程速度      改善设计、提高可读性、减少缺陷都...

2012-06-06 15:54:29

阅读数:3510

评论数:1

重构-改善既有代码的设计:大型重构

大型重构 1.  Tease apart Inheritance 梳理并分解继承体系 某个继承体系同时承担两项责任 ,建立两个继承体系,并通过委托关系让其中一个可以调用另一个 . 2.   Convert Procedural design to ...

2012-06-06 15:13:44

阅读数:3969

评论数:1

重构-改善既有代码的设计:处理概括关系 (九)

简化函数调用 1.  Pull Up Field 字段上移 两个子类拥有相同的字段。将该字段移至超类。 如果各子类是分别开发的,或者是在重构过程中组合起来的,你常会发现它们拥有重复特性,特别是字段更容易重复。这样的字段有时拥有相似的名字,但也并非绝对如此。判断若干字段是否重复...

2012-06-05 19:20:11

阅读数:3100

评论数:1

重构-改善既有代码的设计:简化函数调用 (八)

简化函数调用 1.  Rename Method 函数改名 函数的名称未能揭示函数的用途。修改函数名称。 大力提倡的一种编程风格是:将复杂的处理分解成小函数。但是,如果做得不好,这会使你费尽周折却弄不清楚这些小函数各自的用途。要避免这种麻烦,关键就在于给函...

2012-06-04 19:49:46

阅读数:3914

评论数:1

提示
确定要删除当前文章?
取消 删除