自定义博客皮肤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)
  • 收藏
  • 关注

原创 c++:函数模板

一、函数模板概念泛型编程:编写与类型无关的通用代码。函数模板:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生特定类型的模板。二、函数模板格式template<typename T1, typename T2…>返回值类型 函数名(参数列表){}三、函数模板的实例化根据不同的类型的参数使用函数模板时称为函数模板的实例化。隐式实例化:...

2018-11-27 20:18:22 113

原创 c++:内存管理

一、c/c++的内存分布int a = 1;//a在数据段static int b = 1;//b在数据段int main(){static int c = 1;//c在数据段int d = 1;//d在栈上int num[10] = {1, 2, 3, 4};//num在栈上 char char2[] = "abcd";//char2在栈上 *char2 在栈上...

2018-11-27 19:04:41 90

原创 C++:类和对象(下)

一、初始化列表1 构造函数赋值在创建对象时,编译器通过调用构造函数,给对象中的成员变量一个初始值。虽然调用构造函数,对象已经有了一个初始值,但是不能将其称作对类对象成员的初始化,构造函数体中的语句只能称作赋初值。因为初始化只能初始化一次,而构造函数体内可以多次赋值。2 初始化列表初始化列表:以一个冒号开始,接着是一个逗号分割的数据成员列表,每个成员变量后面跟一个放在括号中的初始值...

2018-11-23 17:53:15 98

原创 C++:命名空间、输入输出和缺省参数

一 命名空间1 为甚麽要有命名空间在c/c++中变量、函数和类都是大量存在的,如果把这些变量、函数和类都放在全局作用域中,可能会导致很多冲突,使用命名空间把这些标识符本地化,以避免命名冲突或命名污染。2 命名空间的定义namespace关键字+命名空间命名空间名字,在接一对{},大括号中放的时命名空间的成员。命名空间可以定义变量,也可以定义函数命名空间可以嵌套同一工程中可以同时存...

2018-11-23 15:07:35 89

原创 C++:类和对象(中)

一、类的六个默认成员函数1、初始化和清理。(构造函数完成初始化,析构函数完成清理)2、拷贝复制(拷贝构造函数使用同类对象创建对象,赋值重载是把一个对象赋值给另一个对象)3、取地址和重载(主要是对普通对象和const对象取地址)二,构造函数1、构造函数是一个特殊成员函数,名字和类名相同,创建类类型对象时,由编译器自动调用。(!!!构造函数虽然名叫构造,但构造函数的主要任务不是开空间创建对象...

2018-11-21 10:57:32 109

原创 C++:日期类的实现

Date.h#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include<iostream>using namespace std;class Date{public: Date(int year = 1900, int month = 1, int day = 1); Date(const Date& d);...

2018-11-20 20:31:59 74

原创 C++:类和对象(上)

面向对象的初步认知。C语言是面向过程的,关注的是过程,分析求解问题的步骤,是通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。C++中类的定义C语言中,结构体中只能定义变量,在c++中,结构体中不仅可以定义变量,还可以定义函数。struct Person{public: void ShowInfo() { c...

2018-11-19 23:12:03 111

原创 Linux下的编辑器和编译器,为什么调试的时候需要编译选项中添加 -g. readelf命令,源码安装, rpm安装, yum安装

1、除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点vim是从vi发展出来的一个文本编辑器。代码补完、编译错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复...

2018-11-11 14:54:41 237

原创 Linu实现简单进度条小程序(彩色版)

在实现进度条小程序之前,我们先来看两段小代码test.c#include<stdio.h>int main(){printf("hello bit\n");sleep(3); return 0;}test1.c#include<stdio.h>int main(){printf("hello bit");sleep(3);return 0;...

2018-11-11 14:10:00 183 1

原创 VIM插件——vimplus安装(centos 7)

Centos版本要求centos7及其以上系统。安装vimplus(建议在普通用户下安装)git clone https://github.com/chxuan/vimplus.git ~/.vimpluscd ~/.vimplus./install.sh快捷键以下是部分快捷键,更详细的快捷键请查阅vimplus帮助文档<F5> 显示语法错误提示窗口<F7&...

2018-11-11 12:00:31 2432

原创 八种常见排序算法的比较和实现

首先排序算法大的可以分为:1、关键字比较 2、非关键字比较关键字比较关键字比较就是通过关键字之间的比较和移动,从而使整个序列有序,而关键字比较的算法,又可以像下面这样划分:对于排序算法之间的比较,无异于时间复杂度和空间复杂度。从上表可以看出:1、从平均时间性能而言,快速排序最佳,其所需时间最佳,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。堆排序和归并之间,当n较大时,...

2018-11-11 10:16:55 580

原创 快速排序

快速排序(Quick Sort)是对冒泡排序的一种改进,基本思想是选取一个数作为关键字,经过一趟排序,将整段序列分为两个部分,其中一部分的值都小于关键字,另一部分都大关键字。然后继续对这两部分继续进行排序,从而使整个序列达到有序。递归实现:void QuickSort(int* arr, int left, int right){ int mid = 0; if(left >= r...

2018-11-10 23:35:37 11587 3

原创 归并排序

归并排序(Merging Sort)。”归并”的意思就是将两个或者两个以上的有序序列组合成一个新的有序表。假定给定一段序列要求排序,那么可以划分成子问题,将整段序列划分成左右两段,只要左右两段分别有序,那么该序列就有序,然后依次划分,直到划分为单个数据作为一组,一个数据肯定是有序的。因为每次都要对两个有序区间进行合并,所以归并排序需要一段与待排记录等数量的辅助空间。void _MergeS...

2018-11-04 12:25:37 124

原创 堆排序

堆排序(Heap Sort)1991年的计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd)和威廉姆斯(J.Williams)在1964年共同发明了著名的堆排序算法( Heap Sort )建堆:利用数组下标之间的关系,将数组想象称为一个完全二叉树。如果要对待排序列进行升序排列,需要建立一个大堆,每次从堆顶拿出最大的记录,放在数组的最后一个位置,...

2018-11-04 12:14:10 143

原创 冒泡排序

冒泡排序就是从前至后依次比较相邻的两个数据的大小,将大的往后移动,这样经过一次完整的比较和移动,就可以将序列中最大的一个数放置到序列的最后。算法过程:1、比较相邻的元素,如果第一个比第二个大,就交换两个的位置。2、从序列的开头一直到结尾一直重复这样的工作,这样一趟结束够就可以将最大的数放置到最后。3、进行第二趟排序,但最后一个数不需要参与计较,因为它已经是最大的。4、进行N趟这样的重复操...

2018-11-04 12:04:11 125

原创 选择排序

选择排序的思想为,在一组待排序列中,每一趟在n-i+1(i=1,2,3…,n-1)个记录中选取关键字最大/最小,作为有序序列中第i个记录。很显然,相对于直接插入来说,选择排序的记录移动操作次数较小。但是选择排序无论待排序列是有序还是无序,它对关键字的比较字数是不变的,都为n(n-1)/2。因此总的时间复杂度还是O(n²)void SelectSort1(int* arr, int n){...

2018-11-04 11:53:59 94

原创 希尔排序

希尔排序(Shell’s Sort)顾名思义,是一个叫Shell的人发明的算法。希尔排序又称为”缩小增量排序”,是针对直接插入的一种极端情况的优化。希尔排序的时间复杂度经过计算,大概是0(N^1.3)直接插入排序的时间复杂度是O(n²),但是如果待排序列有序的话,插入排序的时间复杂度可以达到O(n),所以如果待排序列是接近有序的话,那么直接插入的效率就可以大大提到了。希尔排序的基本思想将待排...

2018-11-04 11:36:13 125

原创 非比较排序:计数排序

**计数排序(Count Sort)**是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。计数排序的思想类似于哈希表中的直接定址法,在给定的一组序列中,先找出该序列中的最大值和最小值,从而确定需要开辟多大的辅助空间,每一个数在对应的辅助空间中都有唯...

2018-11-04 11:10:37 117

原创 二叉树的相关接口实现

一、4.1二叉树链式结构的遍历所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。前序/中序/后序的递归结构遍历:是根据访问结点操作发生位置命名NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍...

2018-11-02 17:44:03 270

空空如也

空空如也

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

TA关注的人

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