自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

majcos的专栏

努力寻找方向

  • 博客(17)
  • 收藏
  • 关注

原创 给const对象赋值

 class T{public:    const T& operator=(const T& t) const{return *this;}};void main(){    const T t;    T t1;    t = t1;}

2006-10-25 14:50:00 2087

原创 堆排序代码

对排序的过程: 建立堆 执行n-1次DeleteHeap操作堆排序与直接插入排序的区别: 直接选择排序中,为了从R[1..n]中选出关键字最小的记录,必须进行n-1次比较,然后在R[2..n]中选出关键字最小的记录,又需要做n-2次比较。事实上,后面的n-2次比较中,有许多比较可能在前面的n-1次比较中已经做过,但由于前一趟排序时未保留这些比较结果,所以后一趟排序时又重复执行了这些比较操作。堆

2006-10-10 16:30:00 3276

原创 快速排序代码

快速排序的基本思想是基于分治策略的。对于输入的子序列L[p..r],如果规模足够小则直接进行排序,否则分两步处理:分解(Divide):将输入的序列L[p..r]划分成两个非空子序列L[p..q]和L[q+1..r],使L[p..q]中任一元素的值不大于L[q+1..r]中任一元素的值。 递归求解(Conquer):通过递归调用快速排序算法分别对L[p..q]和L[q+1..r]进行排序。 代码如

2006-10-10 14:28:00 1563

原创 归并排序代码

可以运用分而治之方法来解决排序问题,该问题是将n 个元素排成非递减顺序。分而治之方法通常用以下的步骤来进行排序算法:若n为1,算法终止;否则,将这一元素集合分割成两个或更多个子集合,对每一个子集合分别排序,然后将排好序的子集合归并为一个集合。  代码如下:void InsertionSort(int a[], int start, int end){    if(a==NULL)     

2006-10-10 14:01:00 2416

原创 插入排序代码

插入排序的基本思想,每次从未排序的序列中取一个元素,插入到已经排好序的序列的合适位置。小规模输入来说,插入排序速度比较快。许多复杂的排序法,在规模较小的情况下,都使用插入排序法来进行排序。数组的插入排序算法如下:void InsertionSort(int a[], int n){    if(a==NULL)        return;    for(int i=1; in; ++i)

2006-10-10 11:54:00 2190

原创 选择排序代码

选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。代码如下:void SelectionSort(int a[], int n){    if(a==NULL)        return;    for(int i=0; in-1; ++i)    {        i

2006-10-10 10:54:00 1836

原创 冒泡排序代码

最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,

2006-10-10 10:28:00 8969 1

转载 Java内部类

有些类的定义中包含另一个类的定义。这种处于内部的类称为内部类(inner class)。 例如:  public class OuterClass { public class InnerClass { //---This is a inner class. } } InnerClass类嵌套在OuterClass中,并且被声明为public,因此被OuterClass类之

2006-10-09 20:23:00 948

原创 KMP算法C++代码

KMP算法的思想一般数据结构书都有讲,没讲的话google一下,有很多文章解释了其思想。晚上写了写这个代码,虽然不难,但还是费了番功夫调试,出现的主要问题有:无符号整型数据与整型数据比较大小(让我越来越讨厌无符号数!),还有一个问题就是KMP算法本身与求next数组的算法很类似,但是有些微妙的区别,也让调试了几次。 int* GetNextVal(const char *s, int 

2006-10-08 21:12:00 11322

转载 C++编程易范的错误

 [美]Stephen R.Davis    C/C++语言中有许多对初学者(甚至是有经验的编程人员)来说很容易范的错误。通晓这样的错误可使你免于陷入其中。忘记初始化指针    这种错误只是一般"忘记初始化变量"错误的一个特殊形式(C/C++中变量不会自动初始化,而Basic可以)。使这种错误更糟糕的原因是它的后果往往更加糟糕:  void SomeFunction()  {    int *pn

2006-10-06 13:55:00 863

原创 Facade模式

为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。它对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。如果应用需要,它并不限制它们使用子系统类。 

2006-10-04 21:11:00 479

原创 flyweight模式

运用共享技术有效地支持大量细粒度的对象。• 一个应用程序使用了大量的对象。• 完全由于使用大量的对象,造成很大的存储开销。• 对象的大多数状态都可变为外部状态。• 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。• 应用程序不依赖于对象标识。避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类).实现的时候注意两点1.分离对象的外部状态2.管理好共享的对象 

2006-10-04 20:28:00 558

原创 proxy模式

为其他对象提供一种代理以控制对这个对象的访问。远程代理虚代理保护代理智能指引Remote Proxy可以隐藏一个对象存在于不同地址空间的事实。Virtual Proxy 可以进行最优化,例如根据要求创建对象。Protection Proxies和Smart Reference都允许在访问一个对象时有一些附加的内务处理。 

2006-10-04 20:12:00 551

原创 真奇怪,以“command模式”发就是发不了,发了几次都失败

empty 

2006-10-04 19:50:00 601

原创 命令模式

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作Command模式是回调机制的一个面向对象的替代品在不同的时刻指定、排列和执行请求支持取消操作支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍用构建在原语操作上的高层操作构造一个系统 

2006-10-04 19:49:00 449

原创 Chain of responsibility模式

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。可处理一个请求的对象集合应被动态指定降低耦合度增强了给对象指派职责的灵活性请求不保证被接受 

2006-10-04 19:46:00 517

原创 Iterator模式

I提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。它支持以不同的方式遍历一个聚合迭代器简化了聚合的接口在同一个聚合上可以有多个遍历 

2006-10-04 19:15:00 452

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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