自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个菜鸟

学习、工作中的一些技术问题~~~

  • 博客(24)
  • 资源 (10)
  • 收藏
  • 关注

原创 条款6:若不想使用编译器自动生成的的函数,就该明确拒绝

Explicitly disallow the use of compiler-generated function  you do not want!在C++的设计和实现中,对于有的类的对象,可能我们要求不能对其进行进行复制拷贝,这样就要求设计的类不能含有用户可调用的复制构

2011-08-24 18:34:37 606

原创 C++ 虚函数表解析--转载

前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板

2011-08-23 15:15:26 603

原创 C++ typedef使用方法总结---转载

C++编程语言中,有一种专门应对类型定义的用法,叫做C++ typedef。那么我们应该如何正确理解这一应用呢?在这篇文章中,我们会通过C++ typedef不同使用方法来对这一应用进行详细介绍。C++ typedef,顾名思义,为“类型定义”,可以解释为:将一种数据类型

2011-08-23 15:12:30 2587

原创 条款33----避免遮掩继承而来的名称

在C++的继承体系中,名称的查找按照一定的规则进行:首先在局部作用域中进行查找,如果找到则停止,如果没找到则到外层进行查找,一次类推。特别需要注意的是,C++在查找的时候,只会对名字进行比较查找,不会对名字的类型加以注意比较。例如定义如下两个类Base和Derive:cl

2011-08-20 10:00:38 613

原创 继承中构造函数内部的运行顺序

在C++中,派生类的构造函数内部可以显示的调用基类的构造函数,如果不显示的调用基类的构造函数,那么会默认的调用基类的默认构造函数。例如,假设基类为Item_base,定义如下:class Item_base{private: int number; strin

2011-08-20 08:32:51 767

原创 C++ 内存分配学习笔记

C++将内存划分为三个逻辑区域:栈、堆和静态存储区。其中的对象我们分别称作栈对象、堆对象和静态对象。其中,栈中主要保存局部变量和对象,栈中变量的对象的生成有程序建立,但是删除则是有编译器自动完成,对于系统自定义类型,系统调用类型对应的析构函数(如果有的话),对于某些基本类型,

2011-08-18 10:27:11 579

原创 转--C++内存对象总结

如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛。用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性能,更为主要的是,当我们操作内存的时候一不小心就会出现问题,而且很多时候,这些问题都是不易发觉的,比如内存泄

2011-08-17 15:36:11 755

原创 C++四种类型转换总结

C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。看似问题复杂化了,其实不然。C风格的类型转换在程序语句中难以识别,类型转换是去const,还是int转换成char,或是子类指针转换成父类指针?C括号风格的强制类型转换解决不了这些问题。C++的4种类型转换能够解决

2011-08-17 14:45:40 675

原创 const使用总结

在C++中const用来对目标的性质进行相应的限制,使用const修饰后,不能对目标内容进行修改。特别是当const修饰成员函数的时候,对函数的使用有相应的限制。一般来说,const对象只能调用const成员函数,如果const对象需要调用非const成员函数则需要使用使用mutable修饰变量或者使用this指针进行强制类型转换,而非const对象则可以调用const成员函数以及非const成员

2011-08-17 14:01:22 758

原创 二叉查找树后继节点和前驱节点查找

二叉查找树按照二叉树进行组织。二叉查找树关键字的存储方式总是瞒住二叉查找树性质:设x为二查查找树种一个节点。如果y是x的左子树中的一个节点,那么key[x] >= key[y]。如果y是x的右子树的一个节点,那么key[x] 这样对二叉查找树进行中序遍历就可得到书中所有元

2011-08-08 16:39:00 6926 2

原创 二叉树的遍历算法

二叉树的遍历算法分为三种,根据对父节点的遍历顺序分为先序遍历、中序遍历以及后序遍历。其中可使用递归方式以及非递归方式,递归方式程序非常简单,但是效率相对较低,在非递归i方式中,借助栈来对数据进行存储。定义树中节点的数据结构如下所示:typedef struct _node

2011-08-08 15:44:04 1056

原创 使用随机算法查找第k大元素

在查找过程中,使用随机数生成器随机生成一个随机数最为一个下标,根据该下标将数组分为两部分,前一部分元素均是小于下标对应元素,后一部分均是大于下标对应元素。如果下标对应元素刚好是第k大元素这查找结束,否则根据与k大小的比较结果,选择前一部分或者后一部分进行查找。例如:假设数组A

2011-08-08 10:30:36 2136

原创 基数排序

(radix sort)则是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其

2011-08-08 08:26:29 638

原创 计数排序

计数排序假设n个输入元素中每一个都介于0到k之间的整数,此处k为某个整数,当k=O(n)时,计数排序的运行时间为O(n)计数排序的基本思想就是对于每一个输入元素x,确定小于x的元素个数,利用这一信息就可以将x安放在最终输出数组的正确位置上。在计数排序中,假设输入数组为A,

2011-08-07 15:48:26 481

原创 2路归并排序

归并排序(Merging Sort)。“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。时间复杂度为O(nlog2n)。2路归并排序每次将两个有序子序列进行合并。//将source顺序表中的两个子序列source[i...m],source[m+1..n]进行

2011-08-07 10:17:47 790

原创 堆排序

堆排序(Heap Sort),只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。堆的定义如下:n个元素的序列{k1, k2, … , kn}当且仅当满足下关系时,称之为堆。Ki = K2i && Ki >= K2i+1,(i = 1, 2, … , n/2」)。若

2011-08-07 09:56:12 518

原创 简单选择排序

一趟简单选择排序的操作为:通过n-i词关键字的比较,从n-i+1个记录中选择关键字最小的记录,并和第i个记录交换。简单排序过程中,需要进行记录移动的次数较少,其最少值为0,最大值为3(n-1).但是所需比较的次数为n(n-1)/2,因此,总的时间复杂度为O(n^2)tem

2011-08-07 09:08:20 519 1

原创 快速排序

快速排序(Quick Sort)是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。首先拿到枢轴位置,然后对低于枢轴位置的序列进行分区(也

2011-08-06 20:55:28 630

原创 冒泡排序

起泡排序(Bubble Sort),依次比较相邻的两个记录的关键字,逆序时交换,一趟比较后最大的记录被安置到最后一个记录的位置上。下一次比较时比较的长度比上一次减1,知道最后长度为1终止。template void bubble_sort(vector& array,int

2011-08-06 20:40:22 520

原创 插入排序--希尔排序

希尔排序(Shell’s Sort)又称“缩小增量排序”(Diminishing Increment Sort),它也是一种属于插入排序类的方法,但在时间效率上较前述几种排序方法有较大的改进。理解:先将整个待排记录序列分割成为若干子序列,其中每个子序列有相隔一定位置的记录组成

2011-08-06 20:14:47 622

原创 插入排序--2路插入排序

2路插入排序是在折半插入排序基础上进行改进,其目的是减少排序过程中的移动记录的次数,但为此需要增加n和记录的辅助存储空间。理解:所谓的2-路,是指优先插入在序列前面或后面,然后再考虑插入到中间通过巧妙的取余运算,找到正确的插入位置。要想理解算法,一定要将数值代入到程序

2011-08-06 16:28:25 2327 3

原创 插入排序——折半插入排序

折半插入排序在直接插入排序的基础上作改进,在查找插入位置的时候,使用折半查找方法对已排序的顺序表进行查找,从而减少查找的次数,但是不会减少移动的次数,所以时间复杂度仍然是O(n^2)templatevoid binary_insert_sort(vector& array

2011-08-06 16:24:45 910

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

直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。时间复杂度为O(n^2)。理解:依次将每个待排序的记录插入到一个有序序列的合适位置。插入的位置是和有序序列

2011-08-06 16:21:05 956

原创 C++ 学习笔记1

最近看了《C++ primer》一书,感觉看的挺仔细的,觉得理解的差不多了,今早上开始开算法导论,以前看算法导论的时候都是知道理论,没有动手实现,感觉收获不大。现在再看的时候觉得应该动手实现,加深理解的同时也可以锻炼C++编程。不动手不知道,C++的很多基本知识编程的时候还是不熟

2011-08-06 10:17:30 518

Support Vector Machines vs Logistic Regression

Support Vector Machines vs Logistic Regression

2016-10-23

常用算法手册

常用算法C语言描述,适合于计算机人士,手头必备资料

2012-10-22

Machine Learning in Action 完整高清版本 英文版本教程

Machine Learning in Action是一本介绍常用机器学习算法,同时使用具体数据和实例讲述算法具体应用的书,非常的适合于机器学习学习人员

2012-10-22

Mastering Algorithms with C

C语言讲述常用算法,讲的非常的详细,对学习算法的同学很有帮助

2012-09-24

think in python

很有用的python资料,希望对学习python的同学有用

2012-08-23

隐马尔科夫模型资料

隐马尔科夫模型是很多模型的基础,具有广泛的应用

2011-12-24

隐马尔科夫模型

HMM是非常重要的模型,在自然语言处理中具有显著的应用

2011-12-24

空空如也

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

TA关注的人

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