自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 const 和static 变量

#includeusing namespace std;class U{public: const int b;  // 必须通过构造函数 初始化列表进行初始化 static int c;   // 必须在类外赋值 const static  int  a=20;  //此处不赋值,可以在类外赋值 U( int m ) :b(m)   { }};//

2013-01-21 21:35:04 634

原创 设计模式--桥接模式

桥接模式:用聚合模拟继承。#include using namespace std;class AbstractFunction{public: virtual void nameFunction() = 0; virtual void dosth() = 0;};class Call: public AbstractFunction{public:

2013-01-20 21:57:17 401

原创 求和(单例模式,初始化列表,容器,迭代器)

使用单例模式,初始化列表,容器,迭代器#include #include using namespace std;class sum{public: const int num ;   void  toSum( );    static sum * getInstance() {  if( NULL == pInstance )   pInsta

2013-01-20 18:02:29 696

转载 计算机经典书籍

各种计算机语言的经典书籍1、Java   Java编程语言(第三版)---Java四大名著----James Gosling(Java之父)  Java编程思想(第2版)----Java四大名著----Bruce Eckel  Java编程思想(第3版)----Java四大名著----------------Bruce Eckel  JAVA 2核心技术 卷I:基础知识(原书第

2013-01-20 14:55:51 590

原创 设计模式--单例模式,观察者模式,适配器模式

看c++的构造方法,无意中想到,构造方法要定义为public的,这样才可以在main()函数中,实例化对象。后来查阅资料,发现有些设计模式是可以实现构造函数定义为private类型的。如下面简单的单例模式:此方法的局限性比较大。#include#includeusing namespace std;class SingleInstance{private:   Si

2013-01-19 22:56:29 2303

原创 多态

对多态的理解:#includeusing namespace std;class A{public: virtual void printA() {  cout  } virtual void printB() {  cout  } void printSomething() // 此方法就是个接口,有所定义(定义了输出顺序),后代可根据需要

2013-01-19 17:59:35 475

原创 排序系列--堆排序

选择类排序--堆排序思想:1.建立大顶堆(小顶堆),此时产生的序列并不是有序的。但是确是局部有序的。因为堆是完全二叉树,且每个结点的值都大于或者等于其左右孩子。a[s]>=a[2*s],a[s]>=a[2*s+1],注意结点关系。--根据完全二叉树得到的性质。如何建堆呢?从length/2开始到结点1(均不是叶子结点),对每个结点进行调整。从length/2+1到length,均是叶子

2013-01-14 20:46:27 478

原创 排序系列--冒泡排序

交换类排序:冒泡排序,快速排序之前有一种错误的认识,一直称作冒泡排序的算法,其实不是真正的冒泡排序。因为真正的冒泡排序,是两两比较相邻记录。最最容易的排序代码如下: for (i=1; i {      for(j=i+1; j     {          if (a[i] > a[j])         {             tmp = a[i];

2013-01-11 23:01:49 426

原创 排序系列--快速排序(实现+复杂度分析)

交换排序类:冒泡排序,快速排序他们的共同点就在于,通过记录的交换,最终得到想要的结果。下面实现快速排序。思想:通过一趟排序将待排记录划分为两部分。(作为划分标记的记录,已经保证是在它正确的位置)再对那两部分,再进行划分。知道划分为一个一个单独的数据,此时,所有记录已经是排好序了。 复杂度分析:快速排序的时间性能取决于快速排序递归的深度。我们假设在最优情况下,partitio

2013-01-11 22:44:21 569

原创 排序系列--希尔排序

前面说过,直接插入排序时希尔排序的一个特例。是增量为1的希尔排序。思想:以相差同一个increment增量的记录为一个子序列,将这个子序列进行排序。汇集多个子序列,然后改变increment的值(减小),这样形成新的子序列,此时的子序列的记录比上一次的多,使更多的记录基本有序。如此不断,知道最后将整体所有的记录以increment为1,进行直接插入排序。(基本有序,保证了小数基本在前,大数基本

2013-01-10 22:52:16 364

原创 排序系列--直接插入排序

根据在排序过程中的主要操作,可分为四大类:插入排序类:直接插入排序,希尔排序选择排序类:简单选择排序,堆排序交换排序类:冒泡排序,快速排序归并排序类:归并排序下面来说下他们的思想,就知道为什么事这四大类了:插入排序类:都是对已经存在的记录进行移动,然后将某个记录插入相应的位置。直接插入排序:是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表。(

2013-01-10 22:32:03 613

原创 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来.

题目:输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来.1.  是01背包问题。从最大值n开始取, 如果取n ,则剩下的为 m-n.需要从剩下的n-1个数中取。 如果不取n,则和仍为m,从剩下的n-1个数中取。所以,会是一个递归问题。                           find(m-n, n-1)

2013-01-08 22:42:24 1001

原创 Fibonacci数列(效率较高)

/* 题目:定义Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1,2\ f(n-1)+f(n-2) n>2输入n,用最快的方法求该数列的第n 项。*/思想 :用两个数分别循环记录和,f1记录n为奇数时,f2记录n为偶数时。用i标记,每次记录两个和。这样比较快。 #include using namespace std;int main(

2013-01-07 23:03:26 632

原创 查找最小的k 个元素题目

//题目:查找最小的k 个元素题目:输入n 个整数,输出其中最小的k 个。思想:两个数组,一个用于存储输入的n 个整数,另一个用于存储当前比较的数中最小的k个整数,按从小到大排列。那么排序数组中第k 个数是当前k个数中最大的。和n个数的数组中元素一个个比较,最终保证存k个元素的数组中存储的是所有数中最小的k个数。 #include using namespace std;#

2013-01-07 22:01:42 714

原创 n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,每次从这个圆圈中删除第m 个数字

// 题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,每次从这个圆圈中删除第m 个数字 方法1,思想:采用循环链表的结构。也是对圆圈的模拟。思想好理解方法2,使用数组,但是要注意,对循环数组,也是对圆圈的模拟。代码量少方法1:#include using namespace std;typedef struct LNode{    int

2013-01-06 22:19:48 663

原创 利用hash表思想,实现查找到第一个在字符串中出现的字符

利用hash表的存储思想,先将表初始化,然后对表的内容存储值。比较特别的是,存入的值是输入字符的出现次数(也就是hash表中的冲突出现次数)。这里的hash函数,就是相当于输入字符的ASCII。输入字符相同,在address处就冲突,统计下来冲突次数。当冲突次数为1时,表示,此字符仅一次出现。问题解决。 #include using namespace std;#define MA

2013-01-06 21:20:37 743

原创 利用hashtable思想,保存在一个字符串中找到第一个只出现一次的字符

编程思想:利用hashtable的思想,将输入的字符,映射到一个哈希表中,hash函数为:对输入字符的ASCII码求模运算,映射到在hashtable中的具体下标。通过对hashtable的初始化,均为‘\0’,如果输入的字符,映射到hashtable的相应位置,其内容不是‘\0’,则表示已经有字符放置,则该字符一定不是只出现一次。 #include using namespace s

2013-01-05 23:11:24 552

原创 设计包含min 函数的栈(程序分析)

设计包含min 函数的栈。定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)。 如果不要求时间复杂度为O(1),那么只是一个很简单的进栈,出栈,比大小的操作。实现如下:#include using namespace std;#include #define MAXSIZE 20typ

2013-01-04 22:59:58 354

原创 建树和遍历树(前序)

采用指针的方式,没有使用较复杂的指针的指针,所以,在进行参数传递时,采用引用,这样对T1的操作,等同于对T的操作。可保证在T,这个局部变量在函数调用结束销毁时,使T1所指向的地址空间正确。 #includeusing namespace std;#include typedef struct BiNode{    char    data;    struct Bi

2013-01-02 21:55:13 861

空空如也

空空如也

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

TA关注的人

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