- 博客(20)
- 收藏
- 关注
原创 ArrayList源码解析
前言: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小等。 一:ArrayList的继承结构与定义:
2017-01-04 10:51:03
225
原创 ArrayList源码解析
前言: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小等。 一:ArrayList的继承结构与定义:
2017-01-04 10:50:40
309
原创 装饰模式(Decorator)
前言: 装饰模式又名包装模式。装饰模式以对客户端透明以的方式扩展对象的功能,换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象加以扩展。是继承关系的一个替代方案。 (一)装饰模式的简略图: (二)装饰模式的环境角色: 1.抽象构件(Component)角色:给出一个抽象接口,以规范准备接受附加责任的对
2016-05-09 15:50:41
773
原创 观察者模式(Observer)
前言: 观察者(Observer)模式是对象的行为模式,又叫做发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化是,会让通知所有观察者对象,是他们能够自动更新自己。 (一)观察者模式的简略图: (二)观察者模式的环境角色
2016-05-07 16:59:19
2436
原创 策略模式
前言: 策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现 算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税 ”就有不同的算税方法。策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个 算法或行为族。恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码。 (一)策略模式的定义:
2016-04-29 21:43:37
297
原创 排序总结(二)
前言:本篇总结插入排序和希尔排序,把两种放在一起讨论的原因,两种排序的算法的思想是很相似的,可以说希尔排序就是插入排序的改进版本。一,插入排序 插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排
2016-03-19 17:34:52
486
原创 排序总结(一)
各种排序的性能总结 一:冒泡排序 原理:原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。冒泡排序对n个项目需要O(n^2)的比较次数,且可以原地排序。尽管这个算法是最简单了解和实现的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的。 例子: 元数据:1
2016-03-13 19:39:34
512
原创 java反射分析
Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信息。反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值。一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C+
2015-09-09 11:19:21
348
转载 进程与线程
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。
2015-08-25 14:17:42
297
转载 链表总结
链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:struct ListNode{ int m_nKey
2015-06-03 12:46:52
299
转载 线索二叉树
一、线索二叉树的原理 通过考察各种二叉链表,不管儿叉树的形态如何,空链域的个数总是多过非空链域的个数。准确的说,n各结点的二叉链表共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。优点:遍历更快速、使用内存更少如下图所示。 因此,提出了一种方法,利用原来的空链域存放指针,指向树中其他结点。这种指针称为线索。
2015-05-28 12:31:18
364
原创 二叉树的递归遍历
#include #include ng namespace stdusi;struct node{ struct node * lchild; struct node * rchild; int data;}node;typedef struct node * BTREE;/*BTREE CreateBT(int v,BTREE ltree,BTREE rt
2015-05-16 16:20:04
421
原创 AVL树的旋转分析与实现
AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且它须保证树的深度是O(log N).**一棵AVL树是其每个节点的左子树和右子树的高度最多插1的二叉查找树**当
2015-05-04 23:22:20
518
原创 队列的数组实现
#ifndef QUEUE_H_INCLUDED#define QUEUE_H_INCLUDEDstruct QueueRecord;typedef struct QueueRecord * Queue;int IsEmpty(Queue);int IsFull(Queue Q);Queue CreateQueue(int MaxElements);void DisposeQueu
2015-05-02 16:15:50
417
转载 中缀表达式转后缀表达式
#include #include #define ElementType chartypedef struct Node *PtrToNode;typedef PtrToNode Stack;typedef struct Node{ ElementType Element; PtrToNode Next;};int IsEmpty(Stack S);Stac
2015-04-25 14:57:56
373
原创 栈的实现
比较简单,直接上代码了#ifndef _Stack_hstruct Node;typedef int ElementType;typedef struct Node * PtrToNode;typedef PtrToNode Stack;int IsEmpty(Stack S);Stack CreateStack(void);void DisposeStack(St
2015-04-18 23:09:11
366
原创 时间复杂度
最近在跟数据结构的课程,发现了这道题从n^3刷到n^2最后刷到nlogn,觉得对于理解算法的时间复杂度比较有帮助,于是记录下来,以便以后查看。给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 输入格式:输入第1行给出正整数 K (输出格式:在一行中输出最大子列和。如果序
2015-01-10 21:50:56
446
原创 linux目录结构
root:存放root用户的相关文件home:存放普通用户的相关文件bin:存放常用的命令的目录sbin:要具有一定权限才可以使用命令boot:存放引导相关的文件etc:存放配置相关文件var:存放经常变化的文件usr:文件默认安装的文件夹常用命令pwd:显示当前在哪个路径下.添加用户:useradd ——用户名passwd ——用户名删除用户u
2014-11-20 23:14:33
350
原创 java学习笔记-继承与接口
继承:当子类和父类出现同样的函数时,子类函数重写(覆盖)父类函数.覆盖:1.子类覆盖父类,必须保证子类权限大于等于父类.2.静态只能覆盖静态.重写和重载重载:只看同名函数的参数列表.重写:方法一摸一样.子父类中的构造函数:构造函数跟着类名走.在对子类对象进行初始化时,父类的构造函数也会进行.那是因为子类的构造函数默认第一行有一条隐式的语句supe
2014-11-11 14:37:58
441
原创 字符串替换
#include#include#include using namespace std;int main(){ int i,j,index,len,len2; char str[101],word[101],newword[101],tmp[101]; while(gets(str)){ int index=0; len=strlen(str); cin>>word;
2014-09-17 16:13:52
1390
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅