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

原创 【C++基础】类的默认成员函数的几种调用方式

先写一个日期类,把构造函数,拷贝构造函数,析构函数,赋值运算符的重载都写上,代码如下:class Date{public: //构造函数 Date() { cout << "Date()" << endl; } //拷贝构造函数 Date (const Date & d) { cout << "Date(cont Date& ...

2018-03-30 18:57:39 3257

原创 【C++基础】浅谈内联、静态成员和友元

内联函数什么是内联函数呢?以inline修饰的函数叫做内联函数,例:inline int MAX(int a, int b) { return a > b ? a : b;}MAX函数是比较两个整型变量a和b的大小的函数,被inline修饰后,就称为了内联函数那么,内联函数有什么作用呢?C++编译器在对代码进行编译的时候,在遇到内联函数的时候,就会把代码展开,没有函数压栈的开...

2018-03-28 19:56:57 339

原创 【数据结构】树的总结

我们在日常生活中经常遇到树——这是一个很熟悉的基本概念,例如族谱,就是一个家族树,可以追踪祖先和后代的信息,还有把英语句子转换为组成部分的词法分析树有许多种树,而且理解树的抽象表示与用它来表示应用的具体表示之间的区别是极其重要的。所以,我这里根据树的概念来一步一步的讨论在数据结构中不同的树树的概念1.树在数据结构中,一棵树就是满足某种要求的节点的一个非空集合。一个顶点就是一个简单对象,可以保存相关...

2018-03-26 13:59:58 2586

原创 【C++基础】关键字const的总结

const是C语言中的一个关键字,因为C++是C的超集,所以C++中也有const关键字所以今天就总结一下const关键字const的作用是什么const的作用是限定一个变量不被改变,例如: int i = 10; const int j = 10;上面定义了两个变量i和j,j是有const修饰的,所以j是不可改变的所以,const的作用可以理解为就是修改权限,本来可以读可以写,被const修饰...

2018-03-24 19:50:06 190

原创 【排序算法】堆排序的分析

在分析堆排序之前,我先讲一讲什么是堆如果一棵树中每个节点的关键字都大于或等于所有子节点中的关键字(子节点存在),那么就称树是堆有序的,在一棵堆有序的树中,不存在关键字大于根节点关键字的节点,那么什么是堆呢?堆是一个节点的集合,表现形式为数组,其中关键字按照堆有序的完全二叉树的形式排列如上图,上图是一个完全二叉树,而且每个关键字都大于他的任意一个子节点(子节点存在),把这棵树放到数组里面,如下:ar...

2018-03-24 16:30:42 385

原创 【算法基础】归并排序的分析

归并排序也是基本的排序之一,也挺重要的,所以写这么一篇博客总结一下归并排序的一个特性是,它对N个元素的文件排序所需要的时间与NlogN成正比,它的缺点是所需需要的空间和N成正比,要克服这个缺点的话,会造成代码非常复杂而且开销巨大。所以如果速度不是主要的问题,而且有足够的空间来使用,归并排序是值得考虑的归并排序是一种稳定的方法, 时间复杂度:T(n) = O(n㏒n),空间复杂度:S(n) = O(...

2018-03-23 12:08:45 1201

原创 【C++基础】实现一个日期类

又是一个昏昏欲睡的下午~好了不多说,开始总结自己写的代码吧我写这个日期类,一个是判断输入的时期是否合法,也就是在构造函数那块,还有一个是运算符重载的时候先讲一下如何判断日期是否合法,写一个函数返回当前月的天数,代码如下://判断闰年bool Date::isleap(int year) { if ((_year % 4 == 0 && _year % 100 != 0) || ...

2018-03-21 17:09:19 659

原创 【排序算法】快速排序的分析改进

基本的快速排序最基本的快速排序是由C.A.R.Hoare在1960年提出的,快速排序的算法是一种分治排序算法它将数组划分为两个部分,然后分别对两个部分进行排序快速每次对数组重新排序,选择一个基准值key,然后让数组满足下面的两个个条件·a[l], ... ,a[i - 1]之中的元素都比key值要小·a[i + 1], ... ,a[r]之中的元素都比key值要大然后通过划分来完成排序,递归的去处...

2018-03-19 17:24:17 9338

原创 【C++基础】C++类的六个默认成员函数

C++中,类有六个默认的成员函数,如图:接下来就分别介绍一下这六个成员函数1.构造函数在C++中,许多类的成员变量都是私有的,在类外部想要对变量初始化是办不到的,所有以必须有一个公有的函数进行初始化,而这个函数当且仅当在定义对象的时候自动执行一次,这时调用的函数叫做构造函数构造函数是个比较特殊的成员函数,有以下几种特点:1.函数名与类名相同 2.没有返回值 3.对象构造时系统自动调用对应的构造函

2018-03-18 18:32:09 379

原创 【C++基础】浅谈C++中引用和指针的区别

引用是什么呢?引用(reference)是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用其实是给已经定义的变量起一个别名定义的格式为: 类型 & 引用的变量名 = 已经定义的变量引用这样几个特点:1.一个变量可以起多个别名,也就是说可以进行多次引用2.引用必须初始化3.引用 只能在引用的时候初始化一次,不能改变引用,就是不能再去引用别的变量例

2018-03-14 15:02:42 272

原创 【数据结构】前缀后缀表达式求值

前缀表达式和后缀表达式是什么呢?对于任何算数表达式来说,如果每个操作符跟在它的两个操作数之后,而不是两个操作数之间,那么这个表达式就是后缀表达,又称为逆波兰表达式,如:3 5 + 7 * 1 -如果是跟在两个操作数之间,那么这个表达式就是中缀表达式,如:(3 + 5) * 7 - 1 如果是在两个操作数之前,那么这个表达式就是前缀表达式,又称波兰表达式,如:-*+3 5 7 1前缀表达式求值,思路

2018-03-13 21:18:18 7872

原创 【算法基础】关于埃拉托色尼筛选法

这几天在学习算法和数据结构,在学习基本数据结构数组的时候(数组就是最基本的数据结构),偶然看到了一种利用数组求素数的方法,就是用的埃拉托色尼筛选法那么埃拉托色尼筛选法到底是什么方法呢?埃拉托色尼选筛法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家 埃拉托色尼(Eratosthenes 274B.C.~194B.C.)提出的一种筛选法。 是针对自然数列中的自然数而实

2018-03-12 18:23:30 1900 1

原创 【Linux学习】Linux根目录下的重要目录

这几天开始学习了使用Linux系统的操作了,查找了一些资料,在这里大致的总结一下根目录下的一些重要的目录Linux下的重要目录有:/bin, /boot, /proc, /sys, /SElinux, /usr/lib, /usr/local, /var, /tmp **/bin:**bin目录包含几个对系统管理员和非特权用户都有用的命令。它通常包含bash、csh等外壳和常用的命令,如cp、mv、

2018-03-12 18:04:09 634

原创 【C++基础】C++函数重载,缺省参数,命名空间问题

前几天开始学习C++语言,看到了函数重载的问题,就总结一下什么是函数重载呢?函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。注意,在C语言中,函数名是不允许相同的,如果函数名相同就会出现函数重载问题例如:int func(int a, int b);int func(int a, char c);int func(char a, char b);

2018-03-12 17:15:07 369

原创 【算法基础】关于分治法

分治法,字面意思是“分而治之”把一个问题分成两个或者多个相似的子问题再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这就是分治法,当然这些肯定是我从百度上抄的。分治法分为以下三个步骤:(1)将原问题分解为多个子问题。(2)对子问题递归求解。(3)将子问题合并为原问题的解例如:使用分治法求解数组中的最大值:#define Type int;Type Fi

2018-03-11 19:55:20 1589

原创 【算法基础】递归分治算法解决汉诺塔问题

今天下午,在昏昏欲睡的情况下外加中间补了十分钟的觉终于把这个汉诺塔的递归问题给弄明白了,下面进入正题:据说,古印度有这样一个传说,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。这就是经典的汉诺塔问题,那么,如何用编程语言

2018-03-11 17:44:56 3055

原创 【C语言基础】函数指针的小问题

关于函数指针和函数声明一个小问题,如下:今天看到一个语句:(*(void (*)())0) ();这样的表达式看着确实很难理解,但是,这类表达式其实是按照使用的方式来声明的。任何C变量的声明都由两部分组成:类型以及一组类似表达式的声明符。例如下面这个声明:float (*h) ();h是一个返回值为浮点类型的函数的指针,所以h是一个函数指针,*h表示的是它所指向的函数。把最上面的那个语句可以看成是:

2018-03-09 15:18:26 242

原创 【数据结构】一些海量数据处理问题

1. 给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP 地址(hash文件切分)把这个100个G的文件分成1000份左右的文件,然后把这个100个G里面相同的IP地址, 使用相同的散列函数将所有IP地址转换为一个整数key,再利用 index=key%1000就可将相同IP分到同一个文件2. 给定10

2018-03-07 21:53:35 375

原创 【数据结构】数据结构之排序算法

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法可以分为稳定排序和不稳定排序比如对一个数组,如果A[i] = A[j],A[i]原来在位置前,排序后A[i]还是要在A[j]位置前,这样的排序叫稳定排序。下面是几种常见的排序算法:一、插入类排

2018-03-07 15:29:08 714

原创 【数据结构】布隆过滤器的简单实现

布隆过滤器的简单实现布隆过滤器(Bloom Filter)的适用范围如下:实现数据字典,数据的判重,或者集合求交集基本原理如下:它的内容是,一个位图加上k个独立的hash函数,通过k个hash函数,可以得到khash函数对应的值,然后把这些hash函数对应的值存入位图中(把具体的某一位置为1),然后查找时,通过判断k个hash

2018-03-05 11:41:50 1495

原创 【数据结构】数据结构之位图

数据结构之位图位图是个很简单的东西,它通过利用一个bit位来表示一些数据状态简单的情况,比如一万个人的性别,或者表示某些东西是否存在,在某些情况可以节省大量的空间。这是位图的结构体代码,capacity表示要存储的数据:#pragma once#include#includetypedef struct BitMap{ uint64_t* dat

2018-03-04 19:43:07 445

原创 【数据结构】简单哈希表的实现(开散列)

数据结构之哈希表的实现(开散列)开散列的方法是,在哈希表中,存储一个单链表,如果出现哈希冲突,就往单链表插入数组中每个位置存储一个单链表,我这里数组元素是指针,是不带头结点的单链表哈希表结构体的代码如下:#define HASHMAXSIZE 1000typedef int HashType;typedef int ValueType;type

2018-03-03 18:37:44 701

原创 【数据结构】哈希表的基本操作

这个哈希表如果出现哈希冲突,用的是开散列的方法,继续往后面插入这些代码主要实现的功能有:创建哈希表,然后实现哈希表的插入删除和查找,是一个通用的哈希表插入时,如果当前位置的statu为valid,表示该位置已经有元素了,就不能插入了否则,无论是invalid还是empty表示都可以插入,invalid表示该位置元素被删除了删除一个

2018-03-02 17:38:31 2632

原创 【数据结构】二叉搜索树的基本操作(第二遍)

总结一下二叉搜索树的删除二叉搜索树的删除分为以下几种情况:1.要删除的结点是叶节点a.要删除的结点是根节点b.要删除的结点非根节点2.要删除的结点左子树为空a.要删除的结点是根节点b.要删除的结点非根节点3.要删除的结点右子树为空a.要删除的结点是根节点b.要删除的结点非根节点4.要删除的结点左右子树都不为空a.要删除的结点是根节点b

2018-03-02 14:26:53 197

空空如也

空空如也

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

TA关注的人

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