c/c++
文章平均质量分 75
skylinesky
这个作者很懒,什么都没留下…
展开
-
c++ 实现策略模式
策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。上面是《大话设计模式》中给出的定义,感觉这个概念给的不好,看了之后不能完全清晰明白该模式(可能自己水平太水的原因吧)。在《effective c++》中指出,策略模式是virtual 函数的替换方法。仔细想想也差不多。如果想在不同的类中实现不同的算法,那么在基类中原创 2012-05-19 23:09:32 · 1390 阅读 · 0 评论 -
c++ 实现模板方法模式
模板方法模式(Template Method):定义一个操作中的算法的骨架,而将一些方法实现延迟到子类。模板方法使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。 通俗一点讲,假设一个类或者算法实现需要调用函数f1、f2、f3,调用的顺序确定,为f1,f2,f3,但是对于不同的类,不同的算法,f1、f2、f3的实现过程会有不同;那么模板方法怎么解决问题的呢?原创 2012-05-19 19:31:36 · 1054 阅读 · 1 评论 -
c++ 实现工厂模式
工厂模式大家都很熟悉了,就是利用多态,利用基类指针指向新生成的派生类,用该指针调用派生类的函数。今天看《effective c++》写代码主要是练习一下,代码中类实现没有考虑太多的构造函数及虚构函数,各位见谅。 #include#includeusing namespace std;class Operation{public: void setNumA原创 2012-05-19 16:07:06 · 803 阅读 · 0 评论 -
堆排序
堆排序大家都很熟悉,原理我也不讲了,需要注意的一点是对排序是不稳定。直接上代码了。 void heapify(int array[], int len, int i){ int j = i*2 + 1; int temp = array[i]; while (j < len ) { if ((j+1) array[j]) j++; if (array原创 2012-05-08 00:24:02 · 341 阅读 · 0 评论 -
快速排序
算法导论前面几章看来好几遍了,每次都是快速排序、归并排序、堆排序及计数排序等,每次到时都能写一遍,但是时间一长还是有些遗忘,现在为了督促自己,写几篇博客吧,把几种排序算法写一下。注意一下,快速排序与对排序是不稳定的,而归并排序与计数排序是稳定的。下面先看看快速排序的c代码实现。 #includeint partition(int array[], int p, int原创 2012-05-07 22:44:11 · 598 阅读 · 0 评论 -
链表快速排序
快速排序大家都很熟悉了,实现的时候都是用的数组,但是有没有想过链表进行快速排序呢(当然还有链表归并排序,可以想一下链表能不能堆排序,这个下篇文章再说);我第一次听说链表快速排序是去年听师兄说的,当时他去百度面试,直接就要求写链表的快速排序,当时也没往心里去,现在有时间了,写了一下。 typedef struct Node { int data; struct Node原创 2012-05-07 23:21:32 · 594 阅读 · 0 评论