- 博客(14)
- 资源 (33)
- 问答 (1)
- 收藏
- 关注
原创 二叉树的应用详解 - 数据结构
概述:平衡树——特点:所有结点左右子树深度差≤1排序树——特点:所有结点“左小右大字典树——由字符串构成的二叉排序树判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重)带权树——特点:路径带权值(例如长度)最优树——是带权路径长度最短的树,又称 Huffman树,用途之一是通信中的压缩编码。1. 二叉排序树(二叉查找树Binary Sear
2012-06-25 11:45:05 41543 2
原创 二叉树遍历 - 数据结构
1. 二叉树遍历1.1 遍历算法: 1.先序遍历的递归算法定义:(也叫做先根遍历、前序遍历). 若二叉树非空,则依次执行如下操作: (1) 访问根结点; (2) 遍历左子树; (3) 遍历右子树。 上图所示二叉树的遍历结果是:ABDECF2.中序遍历的递归算法定义:若二叉树非空,则依次执行如下操作: (1)遍历左子树;...
2012-06-21 11:13:10 4965
原创 数据结构- 串的模式匹配算法:BF和 KMP算法
Brute-Force算法的思想1.BF(Brute-Force)算法 Brute-Force算法的基本思想是:1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。2) 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在
2012-06-20 10:57:23 36511 3
原创 数据结构-栈和队列
1.栈1.1栈的定义栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示:结论:后进先出(Last In First Out),简称为LIFO线性表。栈的基本运算有六种:构造空栈:InitStack(S)、判栈空: StackEmpty(S)、判栈满:StackFull(S)、进栈:Push(S,x
2012-06-19 12:53:15 113091 19
原创 数据结构(1)-线性表
1. 线性表:n个数据元素的有序集合。线性表是一种常用的数据结构。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。 线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有
2012-06-18 16:27:07 39911 11
原创 优秀代码---改善代码三部曲:重构、设计模式、重构与模式
一、改善代码的三部曲 《设计模式》-> 《重构》-> 《重构与模式》。也就是设计->重构->重构出新设计。 《设计模式》主要详细说明20几种模式,为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。为设计而著。 《重构》改善既有代码的设计,总结了我们会用到的各种重构手法,为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计
2012-06-13 10:54:07 18701 6
原创 php的serialize序列化和json性能测试
最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持。在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize函数要高效。耳闻不如眼见,眼见不一定为实。那就用实际数据
2012-06-11 11:08:45 28741 4
原创 Java(1)-Java中的Map List Set等集合类
Map List Set等集合类:一、概述在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系:+Collection 这个接口extends自 --java.lang.Iterable接口├+List(接口 代表有序,可重复的集合。列表)│├ ArreyList (Class 数组,随机访问,没有同
2012-06-08 12:57:41 25105 1
原创 java(4)-深入理解java嵌套类、内部类以及内部类builder构建构造函数
一、什么是嵌套类及内部类 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种: 其一、在一个类(外部类)中直接定义的内部类; 其二、在一个方法(外部类的方法)中
2012-06-08 09:42:26 38556 7
原创 UML图中类之间的关系:依赖,关联,聚合,组合,泛化,实现
类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。3) 类的属性即类的数据职责,类的操作即类的行......
2012-06-07 18:34:44 90371 43
原创 重构全面总结
《重构》为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式: 1)改进软件设计(整理代码) 2)提高代码质量和可读性,使软件系统更易理解和维护 3)帮助尽早的发现错误 4)提高编程速度 改善设计、提高可读性、减少缺陷都是为了稳住阵脚。良好的设计是成功的一半,停下来通过重构改进设计,或许会在当前减缓速度,但它带来的后发优
2012-06-06 15:54:29 3973 1
原创 重构-改善既有代码的设计:大型重构
大型重构1. Tease apart Inheritance 梳理并分解继承体系某个继承体系同时承担两项责任 ,建立两个继承体系,并通过委托关系让其中一个可以调用另一个 .2. Convert Procedural design to Objects 将过程化设计转化为对象设计你手上有一些传统过程佛冈可选择代码 ,将数据记录变成对象
2012-06-06 15:13:44 4522 1
原创 重构-改善既有代码的设计:类继承优化-12种处理概括关系 (九)
简化函数调用1.Pull Up Field 字段上移两个子类拥有相同的字段。将该字段移至超类。如果各子类是分别开发的,或者是在重构过程中组合起来的,你常会发现它们拥有重复特性,特别是字段更容易重复。这样的字段有时拥有相似的名字,但也并非绝对如此。判断若干字段是否重复,唯一的办法就是观察函数如何使用它们。如果它们被使用的方式很相似,你就可以将它们归纳到超类去。2.
2012-06-05 19:20:11 3598 1
原创 重构-改善既有代码的设计:简化函数调用: 15种方法(八)
简化函数调用1.Rename Method 函数改名函数的名称未能揭示函数的用途。修改函数名称。大力提倡的一种编程风格是:将复杂的处理分解成小函数。但是,如果做得不好,这会使你费尽周折却弄不清楚这些小函数各自的用途。要避免这种麻烦,关键就在于给函数起一个好名称。函数的名称应该准确表达它的用途。给函数命名有一个好办法:首先考虑应该给这个函数写上一句
2012-06-04 19:49:46 5852 1
TA创建的收藏夹 TA关注的收藏夹
TA关注的人