自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (3)
  • 收藏
  • 关注

原创 C++归并排序

C++归并排序归并排序是建立在归并操作基础上的一种有效的排序算法,采用分治的思想,将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表。称为二路归并,归并排序是稳定排序。归并操作,指是将两顺序序列合并成一个顺序序列的方法。如:设有数列{6,202,100,301,38,8,1}初始状态:6,202,100,301,38,...

2019-12-16 15:23:53 291

原创 C++桶排序

C++桶排序一、桶排序桶排序,首先要知道所以带排序数值的范围,然后需要有在这个范围的同样数量的桶,接着把元素放到对应的桶中,最后按顺序输出。桶排序是准备不同的桶,将数据分别放进桶里,假如需要100W数据的话,那么需要准备100W个桶,时间很快,但是空间复杂度很大,耗费内存的缺点。二、桶排序的实现假如有n个数据,定义n个桶,把没个数据分别放入每个桶中,将桶位置的数组进行+1,最终...

2019-12-15 10:55:55 1279

原创 C++简单选择排序

C++简单选择排序给定要排序的一组数中,选出最大(或者最小)的一个数与第一个位置的数进行交换,然后在剩下的数当中再找最大(最小0)的与第二个位置的数进行交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个元素)比较为止。例如:开始:1 3 5 7 9 0 2 4 6 8①0 3 5 7 9 1 2 4 6 8②0 1 5 7 9 3 2 4 6 8③0 ...

2019-12-10 15:11:23 278

原创 C++希尔排序

C++希尔排序希尔排序(缩小增量排序)是把记录按下标的一定增量分组,对每组使用直接插入算法排序,随着增量逐渐减小,每组包含的关键词越来越多,当增量减至1时候,整个文件恰恰分成一组,便排序完成。希尔排序是非稳定排序算法。希尔排序基于插入排序的性质而改进的:1.插入排序在对几乎已经排序好的数据操作时,效率高,即可达到线性排序的效率。2.但插入排序每次只能将数据移动一个位置,所以一般还是...

2019-12-08 11:44:20 193

原创 C++插入排序

C++插入排序插入排序思想:将数组分成两组,第一个数组值为一组并认为该数组为有序的,并从后面数组n-1个数中逐个选择与已经有序的数组进行比较,插入到已经排序好的数组中,直至数组中的所有数组有序排列为止。这样的话,n个元素需要进行n-1趟排序!!!数组A[]={2,1,4,5,3,8,7,9,0,6},length=10;i=1,j=0,a[j+1]=1<a[j]=2,故交换a[...

2019-12-07 13:25:05 341

转载 C++快速排序

C++快速排序通过一趟排序将要排序的数据分割成两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此步骤对这两部分的数据进行快速排序,整个排序的过程可以使用递归进行。以此达到整个数据变成有序序列。快速排序通过多次比较和多次交换来实现排序,排序历程:(1)首先设定一个分界值,通过该分界值将数组分成左右两部分(一般分界值为第一个)(2)将大于或等于分界值的数据集中到数组...

2019-12-06 17:45:26 2151

原创 C++冒泡排序

C++冒泡排序冒泡排序重复地走访过要排序的元素列,依次比较两个相邻元素的大小,从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。基本思想:(1)将两两比较相邻元素A(i)和A(i+1)(i=1,2,3,....N-1),如果A(i)>A(i+1),则交换...

2019-12-04 13:49:04 237

原创 C++双向链表

C++双向链表双向链表顾名思义就是每个结点具有两个指针,一个指向前一个结点,一个指向后一个结点,我们不必拘束与单链表的创建遍历操作等,这样大大减少了使用中存在的效率问题。在单链表中,我们有一个数据域还有一个指针域,数据域用来存储相关数据,而指针域负责链表之间的“联系”,双向链表具有两个指针域,一个负责向后连接,一个负责向前连接。//单链表结构template<class ...

2019-11-30 11:25:10 672

原创 C++循环链表

C++循环链表单向循环链表和单向链表的区别:(1)单向链表为头指针,循环链表为尾指针,头指针指向头结点,尾指针指向终端结点;(2)为统一方便操作,单向链表设置头结点,单向循环链表设置头结点和尾结点;(3)设置尾结点后,尾指针指向尾结点,插入,删除等操作不用移动尾指针。在单向链表中,链表最后一个结点的next指针指向NULL,而所谓的循环链表就是将最后一个结点本来指向空的改变其指...

2019-11-24 15:05:15 3441

原创 C++链表

C++链表链表是由一系列连接在一起的结点构成,其中的每个结点都是一个数据结构。链表的结点通常是动态分配、使用和删除的,允许链表在程序运行时增大或缩小,如果需要将新信息添加到链表中,则程序只需要分配另一个结点并将其插入到系列中。如果需要从链表中删除特定的信息块,则程序将删除包含该信息的结点。为什么要用到链表数组作为存放同类数据的集合,给我们程序中带来了很多方便,增加了灵活性。但数组同...

2019-11-19 22:33:10 358

原创 C++容器

C++容器容器用于存放数据的类模板,用于可变数组、链表、平衡二叉树等数据结构在STL中都被实现为容器。使用容器时,即将容器类模板实例化为容器类时,会指明容器中存放的元素的类型。容器中可以存放基本类型的变量,也可以存放对象。对象或基本类型的变量被插入容器中,实际插入的是对象或变量的一个复制品。STL 中的许多算法(即函数模板),如排序、查找等算法,在执行过程中会对容器中的元素进行比较...

2019-11-18 18:33:36 141

原创 C++文件操作

C++文件操作变量中的数据保存在内存中,是临时的;文件数据保存在外存储器上,用于永久的保存大量的数据。根据数据的组织形式,文件分为文本文件和二进制文件。文本文件的每个字节存放一个ASCII代码,代表一个字符;二进制文件把内存中的数据,按照其在内存中的存储形式原样写到磁盘上存放。C++把每个文件看成一个有序的字节流(字符流或二进制流)。每个文件不是以文件结束符结束,就是以在系统维护和管理的数...

2019-11-14 15:43:56 1632

原创 C++中流类和对象

C++中流类和对象输入输出流类ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实就是所谓的流缓冲就是内存空间iostream通用输入输出的头文件,使用cin/cout需要此头文件。fstream用于文件的I/O操作strstream用于字符串流的I/O操作stdiostream用于混合使用C和C++的I/O机制时,例如将C程序转变为C++程序1.插...

2019-11-13 17:30:16 732

原创 五大常用算法之动态规划

五大常用算法之动态规划 动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不像搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。因此读者...

2019-11-10 18:54:37 859

原创 C++类型转换本质

C++类型转换本质在讲类型转换之前,我们先说一下数字是怎么在计算机中存储的。其实数字在计算机中都是用二进制0,1表示的,比如说int a = 3,那么它在计算机中的存储格式为00000000000000000000000000000011。负数是以补码的形式存储的,关于补码可以自己去了解下,这涉及到源码反码的概念。比int小的首先转换成int,unsigned int,long,unsig...

2019-11-02 10:54:00 1145

原创 C++异常处理

C++异常处理异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。但传统错误的处理技术,检查到一个错误,返回退出码或者终止程序等等。此时我们只知道程序有错误,但不能更加清楚知道是很忙错误,所以使用异常,就是把错误和处理分开,由库函数抛出异常,由调用者捕获这个异常,调用者可以知道程序函数库调用出现了错误,并根据错误去处理,而是否终止程序就由调用...

2019-11-02 00:04:00 341

原创 五大常用算法之贪心算法

五大常用算法之贪心算法贪心算法(贪婪算法)指的是:在对问题求解过程中,总是做出在当前看来是最好的选择。不从整体最优上加以考虑,所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。贪心选择 贪心选择是指所求问题整天最优解可以通过一系列...

2019-10-31 22:26:40 803

原创 五大常用算法之分治法

五大常用算法之分治法一、分治法主要思想:当要处理的数据非常多的时候,可以将众多问题先分解成几个小问题,找到求出这几个小问题的方法之后,再找到合适的方法,将子问题解组合成求整个问题的解法。按照这个思想,如果子问题还是很大的时候,继续将子问题分成更小的子子问题,来进行求解,以此类推,直至可以直接将解求出为止。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶...

2019-10-27 16:19:02 1154

转载 C 中类模板

C++中类模板类模板(class Template)函数模板定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中。类模板的目的同样是将数据的类型参数化。声明类模板:template<typename/class 类型参数1,typename/class 类型参数2,typename/class 类型参数3,....>类名{ /...

2019-10-24 11:46:05 1001

原创 C 运算符重载

C++运算符重载一、运算符重载:1.定义:重载操作符是具有特殊函数名的函数,关键字operator后面接需要定义的操作符符号。操作符重载也是一个函数,具有返回值和形参表。它的形参数目与操作符的操作数目相同,使用运算符重载能够提高代码可读性。运算符函数定义一般格式:<返回类型说明符> operator <运算符符号>(<参数表>){ ...

2019-10-22 16:36:53 4265 1

原创 C 友元函数与友元类

C++友元函数与友元类在C++中,一个类中可以有public、protected、private三种属性的成员,通过对象可以访问public成员,只有本类中的函数可以访问本类的private成员。所以,通过友元(friend)能够打破封装性。借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的private成员。有时需要定义一些函数,这些函数不是类的一部分,但又...

2019-10-21 22:30:39 1090

原创 C++的指针

C++的指针在C++中,指针被称为是C/C++中的精髓所在,指针是存放内存地址的一种变量,特殊的地方就在它存放的是内存地址。计算机中的内存都是编址的,每个地址都有一个符号。指针是一个无符号整数,它是一个以当前系统寻址范围为取值范围的整数,声明指针和声明一个无符号整数实质上并无区别。一、变量内存实质(一)变量的实质要理解指针,首先就要理解“变量”存储实质,内存空间图:根据...

2019-10-21 22:29:34 817 1

原创 C++中override overload overwrite

C++中override overload overwrite1. overload(重载)(不是多态)重载:是指同一可访问区内被声明的几个具有不同的参数列(参数类型、参数个数、顺序不同)的同名函数,根据列表确定调用哪一个函数,重载解析中不考虑返回类型,而且在不同的作用域里声明函数也不算重载在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数不同(包括类型、顺序不同)...

2019-10-17 17:33:14 923

原创 C++对象内存模型

C++对象内存模型C语言中数据和处理数据的函数是分别定义,各个处理数据的函数实现相应各种算法。但是C++提供了类,可以实现较好的数据和处理数据的算法的封装性,这种封装性相比较C语言而言会带来一些成本,这主要受制于是C++对象为支持相应特性而实现的内存模型。C++程序内部格局通常分为四个区:全局数据区:静态数据和常量 代码区:所以类成员函数和非成员函数代码 栈区:就是那些由编译器在需...

2019-10-17 16:26:08 1215

原创 C++中静态绑定与动态绑定

C++中静态绑定与动态绑定多态:多态是指同一实体同时具有多种形式,即一个名字可以具有多种语义,函数重载、类模板、函数模板等都属于多态性。通俗来说就是借口的多种不同实现方式。1.对象的静态类型:对象在声明时采用的类型,是在编译期确定的。2.对象的动态类型:目前所指对象的类型,是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。对象静态类型和动态类型:class A{...

2019-10-16 18:05:47 1268 1

原创 C++多态与虚函数

C++多态与虚函数派生一个类的原因并非总是为了继承或是添加新的成员,有时是为了重新定义基类的成员,使得基类成员“获得新生”。面向对象的程序设计真正的力量不仅仅是继承,而且还在于允许派生类对象像基类对象一样处理,其核心机制就是多态和动态联编。一、什么是多态C++有三大特性,封装、继承、多态。多态是面向对象程序设计中一个重要特性。利用多态性可言设计和实现一个易于扩展的系统。多态就是一个事物...

2019-10-15 17:48:42 421

原创 C++借助指针突破访问权限

C++借助指针突破类的访问权限C++面向对象中有一大特性就是封装,使用不同的访问控制符来控制外界对其的访问权限。例如:C++中类的private成员对外是不可见的,可以通过以下方法突破对private成员的访问权限#include<iostream>using namespace std;class A{ private: int mPriva...

2019-10-14 17:19:51 615

原创 C++静态成员与静态函数

C++静态成员与静态函数在C语言中,我们知道有static静态变量,生命周期与作用域都跟普通变量有所不同。而在C++的类中,也有静态成员变量同时还有静态成员函数。一、静态成员当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次;而且要被同类的所以对象共享;各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义对象多少无关。静态方法就是与该类...

2019-10-04 10:42:46 259

原创 C++this指针

C++this指针一、什么是this指针一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this指针作用域是类内部,当类在非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。即使程序员没有编写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数隐含形参,对各个成员的访问均通过this指针进...

2019-09-26 19:46:51 515

原创 C++程序翻译成C语言程序

C++程序翻译成C语言程序C++语言是在C语言的基础上发展过来的,第一个C++的编译器实际上是将C++程序翻译成C原因程序,再通过C语言编译器进行编译。然而C语言中没有类的概念,只有结构,而且函数还是全局函数,没有类成员函数。在翻译时,将class翻译为struct、对象翻译成结构变量,但是对类的成员函数应该如何翻译,对MyCar.Modify();这样通过一个对象调用成员函数的语句,又该...

2019-09-26 17:42:28 3917

原创 C++对象数组

C++对象数组一、对象数组1.C++对象数组的定义:类名 数组名[元素个数]例:Student stu[10];2.对象数组访问形式:数组名[下标].成员名;例:stu[i].print();3.对象数组的初始化:对象数组的初始化通常也是由构造函数来完成的例:关于对象数组的几点说明:  (1)在建立对象数组的时候需要调用构造函数。如果对象数组有100个元素,就需...

2019-09-25 18:46:54 10835

原创 C++成员对象与封闭类

C++成员对象与封闭类成员对象:一个类的成员变量是另一个类的对象。封闭类:包含成员对象的类叫封闭类。封闭类构造函数的初始化列表:定义封闭类的构造函数时,添加初始化列表:类名::构造函数(参数表):成员变量1(参数表),成员变量2(参数表),...{.....}成员对象初始化列表中的参数任意复杂的表达式函数/变量/表达式中的函数,变量有定义调用顺序:当封...

2019-09-25 14:40:51 208

原创 C++析构函数

C++析构函数一、认识析构函数析构函数也是一种特殊的成员函数。它执行与构造函数相反的操作,通常用于撤消对象时的一些清理任务,如释放分配给对象的内存空间等。同样的,我们来看看析构函数的几个特点:函数名是在类名前加上~,无参数且无返回值。 一个类只能有且有一个析构函数,如果没有显式的定义,系统会生成一个缺省的析构函数(合成析构函数)。 因为无参数无返回值析构函数不能重载。每有一次构...

2019-09-23 20:42:21 1811

原创 C++构造函数与析构函数

C++构造函数一、构造函数(一)构造函数基本性质(二)定义构造函数形式(三)利用构造函数创建对象二、成员初始化表三、缺省参数的构造函数四、重载构造函数五、拷贝构造函数(一)自定义拷贝构造函数(二)缺省的拷贝构造函数(三)调用拷贝构造函数的三种情况(四)浅拷贝和深拷贝构造函数和析构函数都是类的成员函数,但它们都是特殊的成员函数,执行特殊的功能,不用...

2019-09-22 13:27:28 693

原创 C++类定义与实现

C++类定义与实现一、类的介绍类是用户自定义的类型,并且该类型具有一定的行为能力(类中说的描述方法)。通常来说,一个类中包含两部分的内容,一是该类的属性,另一部分是它所拥有的方法。比如说“人”这个类,具有姓名,性别,年龄等属性;此外,人能够吃饭,睡觉,行走等行为称为方法。1.类的声明:即类的成员函数声明,以成员函数的方式被称为公有接口接口:一个共享的框架,主要由我们写的方法提供...

2019-09-19 22:38:43 1781

原创 C++的STL中map与multimap

C++的STL中map与multimap一、map与multimap的区别等同于set 与multiset的区别。map是关联容器,map 的每个元素都分为关键字和值两部分,容器中的元素是按关键字排序的,并且不允许有多个元素的关键字相同。注意,不能直接修改 map 容器中的关键字。因为 map 中的元素是按照关键字排序的,当关键字被修改后,容器并不会自动重新调整顺序,于是容器的有序性就...

2019-09-18 14:17:20 1155

原创 C++的*和&

C++的*和&在c++中,当申明变量int *p 的时,表示p是一个储存地址的变量;比如int *p=0,表示p指向地址为00000000的地址单元。当申明指针p之后,再用*p表示p指向的储存空间的内容;&表示取变量的地址;#include<iostream>usingnamespacestd;intmain(intargc,char**ar...

2019-08-28 22:45:38 1336

关于模拟任务抢单与优化定价方案的设计.docx

2017数学建模B题 拍照赚钱。本题主要分析“拍照赚钱”定价规律与设计定价方案。根据附件中已知的数据,利用matlab对数据进行处理从而建立优化模型,分析原定价规律与新定价方案的合理性

2019-08-29

C++通讯管理系统源码

C++通讯管理系统,对通讯录的增删改查,并使用到文件流操作。是不错的一个系统。

2018-06-27

C++学生成绩管理系统

C++语言的学生成绩管理系统,定义学生类和教师类,可以操作有对成绩的增删改查,并可以通过文件的保存。都是通过链表操作 谢谢!!!

2018-06-23

空空如也

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

TA关注的人

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