
C++
文章平均质量分 77
weiker12
这个作者很懒,什么都没留下…
展开
-
new、delete 与指针
在C++中,操作符new 用于申请内存,操作符delete 用于释放内存。在C 语言中,函数malloc 用于申请内存,函数free 用于释放内 存。由于C++兼容C 语言,所以new、delete、malloc、free 都有可能一起使用。new 能比malloc 干更多的事,它可以申请对象的内存,而malloc 不能。C++和C 语言中的指针威猛无比,用错了会带来灾难。对于一个指针p,如果是用转载 2013-07-30 16:10:06 · 601 阅读 · 0 评论 -
希尔排序
希尔排序(Shell Sort)又称为缩小增量排序,输入插入排序算法,是对直接排序算法的一种改进。本文介绍希尔排序算法。 对于插入排序算法来说,如果原来的数据就是有序的,那么数据就不需要移动,而插入排序算法的效率主要消耗在数据的移动中。因此可知:如果数据的本身就是有序的或者本身基本有序,那么效率就会得到提高。希尔排序动画演示 希尔排序的基本思想是:将需要排序转载 2013-10-21 09:30:26 · 769 阅读 · 0 评论 -
冒泡排序法
冒泡排序是非常容易理解和实现,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。代码如下:#includeusing namespace std;原创 2013-10-21 14:17:35 · 929 阅读 · 0 评论 -
快速排序法
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快转载 2013-10-18 11:55:16 · 640 阅读 · 0 评论 -
归并排序法
合并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个有序的子序列组成,每个子序列的长度为1,然后再两两合并,得到了一个 N/2 个长度为2或1的有序子序列,再两两合并,如此重复,值得得到一个长度为N的有序数据序列为止,这种排序方法称为2—路转载 2013-10-18 22:24:16 · 697 阅读 · 0 评论 -
桶排序
【1】桶排序桶排序(也称箱排序),据坊间演绎,其实现方式有很多。在此我们仅仅阐述一下本文的实现思想,以便于更好的理解下面的内容,同时加深对桶排序的认识。首先,说明一点,我们是使用数组模拟桶(最好应该是使用链表模拟)。所谓数组模拟桶实现排序的过程到底是怎么进行的呢?呵呵!其实还真有点抽象。实现步骤如下:(1)定义映射函数 求得欲排数据序列中的最转载 2013-10-18 20:45:22 · 693 阅读 · 0 评论 -
基数排序法
【1】基数排序以前研究的各种排序算法,都是通过比较数据大小的方法对欲排数据序列进行排序整理过程。而基数排序却不再相同,那么,基数排序是采用怎样的策略进行排序的呢?简略概述:基数排序是通过“分配”和“收集”过程来实现排序。而这个思想该如何理解呢?请看以下例子。(1)假设有欲排数据序列如下所示:73 22 93 43 55 14 28 65 39转载 2013-10-18 20:02:09 · 881 阅读 · 0 评论 -
递归和非递归实现汉诺塔问题
汉诺塔(又称河内塔)问题其实是印度的一个古老的传说。开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一 个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上 面。计算结果非常恐怖(移动圆片的次数)18446744转载 2013-10-19 01:20:39 · 1092 阅读 · 0 评论 -
简单选择排序
简单选择排序算法只需要一个辅助空间用于交换记录,所以,简单选择排序算法是一种稳定的排序方法。【例】关键码序列为(42,20,17,27,13,8,17,48),用简单选择排序算法进行排序。排序过程如图所示。选择排序的基本思想是每一趟在n-i+1(i=1,2,…,n-1)个记录中选取关键字最小的记录作为有序序列的第i个记录。我们这里先介绍的是简单选择排序法。原创 2013-10-19 00:29:15 · 1692 阅读 · 0 评论 -
MFC类的组织结构
目前的MFC版本中包含了100多个类,不同的类实现不同的功能,类之间既有区别又有联系。MFC同时还是一个应用程序框架,它帮助定义应用程序的结构以及为应用程序处理许多杂务,事实上,MFC封装了一个程序操作的每一个方面。在MFC程序中,程序员很少需要直接调用Windows API函数,而是通过定义MFC类的对象并通过调用对象成员函数来实现相应的功能。 MFC类库中类是以层次结构的方式转载 2013-09-08 17:13:35 · 1159 阅读 · 0 评论 -
《大话设计模式》读书笔记
1.面向对象简介:利用面向对象编程,要达到可维护,可扩展,可复用和灵活性好的目的。通过面向对象的封装、继承、多态让程序能够尽量保持高内聚,低耦合的状态,使程序更加的灵活,容易修改,并且易于复用。界面逻辑和业务逻辑应该分离,分别封装,利用继承的特性把子类的功能分别继承父类,这样要增加新功能,就可以直接利用继承来添加,而不用修改原先定义好的类。2.计算器设计---简单工厂模式:用单独的类来创造做这原创 2013-08-02 01:33:29 · 1208 阅读 · 0 评论 -
C++ 函数总结(调用+函数+变量)
return 语句:无参无返回值,有参有返回值,无参有返回值,有参无返回值。函数的调用:先明确所调用函数的类型,参数类型,参数的个数,然后确定函数所在的库文件或头文件;明确形参与实参的值传递的过程,以及实参与形参的 区别 ,其中形参是函数中()的参数,如void max(int a, int b) 实参是函数调用时的参数 max(1,2);数组作为函数的参数,值传递的是数组的首地址原创 2013-07-25 07:38:50 · 1708 阅读 · 0 评论 -
C++指针总结
指针定义和基本操作:指针是内存的一个地址。定义格式,类型名 *指针变量名 ,其中指针变量名指的是内存地址,加*是表示指向这一内存地址所存储的内容,如果要取地址的话就要用&来处理,比如& 指针变量名 或 &* 指针变量名,如果指针暂时不用的时候,可以赋给一个空指针 NULL。 统配指针类型void:void *指针变量名 指针与常量限定符const:原创 2013-07-25 07:39:37 · 715 阅读 · 0 评论 -
C++面向对象的三大特性
面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需转载 2013-07-30 17:22:46 · 2662 阅读 · 0 评论 -
C++基本语法
1. C++主要特点:封装性(Encapsulation):把数据与操作数据的函数组织在一起,使程序结构更加紧凑,提高类内部数据的安全性。继承性(Inheritance):增加了软件的可扩充性及代码重用性;多态性(Polymorphism):使设计人员在设计程序时可以对问题进行更好的抽象,有利于代码的维护和可重用2. C++中几个特性的实现技转载 2013-07-30 17:14:01 · 594 阅读 · 0 评论 -
Windows 编程的运行原理及编写流程
窗口产生过程,句柄原理,消息队列,回调函数,窗口关闭与应用程序退出的工作关系,使用VC++的若干小技巧,stdcall与Lessonecl调用规范的比较,初学者常犯错误及注意事项。1. Windows API与Win32 SDK操作系统提供了各种方便开发Windows应用程序的编程接口,所的函数都在Windows。h头文件中声明。Win32 SDK(Software转载 2013-07-30 14:58:06 · 770 阅读 · 0 评论 -
C++面向对象的问题解答
简答题1. 什么是类?什么是对象?对象与类的关系是什么?答:类就是相同的数据和相同的一组对象的集合,即类是对具有相同数据结构和相同操作的一类对象的描述;对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是:数据+操作;类和对象之间的关系是抽象和具体的关系。2. 构造函数和析构函数的主要作用是转载 2013-07-30 17:34:27 · 823 阅读 · 0 评论 -
堆排序
堆排序的时间复杂度是O(nlgN),与快速排序达到相同的时间复杂度。但是在实际应用中,我们往往采用快速排序而不是堆排序。这是因为快速排序的一个好的实现,往往比堆排序具有更好的表现。堆排序的主要用途,是在形成和处理优先级队列方面。另外,如果计算要求是类优先级队列(比如,只要返回最大或者最小元素,只有有限的插入要求等),堆同样是很适合的数据结构。 1、堆排序定义转载 2013-10-21 11:15:36 · 683 阅读 · 0 评论