自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天涯海角

厚积薄发~~

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 二叉树面试题

1.求二叉树中最远的两个结点的距离:思路:对于某个结点,求出其左边的高度和右边的高度,然后加起来,最后选择最大的距离就行。核心代码如下: size_t _GetMaxDistance(Node* root,size_t& distance) { if(root == NULL) return 0; int left = _GetMa

2016-11-30 20:32:53 694

原创 排序算法(七)海量数据的排序问题

前边几篇文章,整理过各种各样的排序,但是那些排序都是只能在内存中进行排序,而如果给大量的数据(内存中无法容纳),要给这些数据进行排序,我们就需要借助于一种外排序----归并排序(之后的文章详细介绍)。     对于大数据的排序,我们只能讲数据存储在磁盘上,然后将存储数据的文件进行分割,将小文件中的数据拿到内存中去借助快排进行排序,最后将小文件合并为一个大文件。在这中间,小文件比较多,我将小文件

2016-11-27 22:19:53 2024

原创 求一棵二叉树的镜像

求一棵二叉树的镜像     二叉树的镜像就是将二叉树的左右子树都交换位置得到的一棵二叉树。所以我们可以通过递归来解决。下边给出代码实现: void _Mirror(Node* root) { if(root == NULL) return; if(root->_left == NULL && root->_right

2016-11-26 11:24:56 668

原创 排序算法(六)非比较排序----计数排序和基数排序

前边的几篇文章介绍的几种排序算法都是比较排序,接下来的文章将会介绍两种非比较排序。计数排序:计数排序通过哈希的方法将一组数据映射到一个数组里,最后将数组中的数依次读取,并写进原来的数组,读出的数据就是有序的。综合以上图片的分析,我们知道,保存数据信息的数组(即就是计数的count数组)的大小应该是最大数与最小数之差再加1.下边请看代码实现://计数排序void Count

2016-11-25 19:06:35 627

原创 【操作系统】学习笔记(三)基于时间片轮转的进程调度算法

本文主要用来分享基于时间片轮转的进程调度算法,但是在分享之前,我还是先来整理一下关于进程调度的基本理论。 调度是决定或者安排事物发展次序的策略。进程的调度就是决定哪个进程来使用处理机。操作系统的3级调度:1.作业调度,又叫高级调度。决定将外存上的哪些作业调到内存的就绪队列,等待执行。2.进程调度,又叫低级调度,决定就绪队列中的哪个进程将获得处理机。3.交换调度,又叫中级调度,为

2016-11-23 20:58:51 7407

原创 排序算法(五)快速排序多种版本

快速排序,就像它的名称一样,是时间复杂度比较低的一种排序算法。     我们知道,快速排序是通过分治的方法,将一个大的区间划分成小区间(找一个枢纽,将大的数放置在枢纽的右边,小的数放置在枢纽左边),然后对左右的两个小区间进行排序的过程。所以,快速排序的主要就是将区间进行划分,也就是单趟排序。单趟排序有以下的几种方法:注明:以下3种方法中的GetMidNum(),下文予以解释~1.左

2016-11-22 21:23:10 7216 5

原创 排序算法(四)选择排序及优化版本

选择排序,是通过每次选择最小的数或者最大的数,然后将它放在它应该出现的位置上。 具体实现过程:将0号下标的数据保存,在之后的数中选择一个最小的数,如果最小的数不是0号数,则将最小的数与0号下标的数进行交换;将1号下标的数进行保存,在之后的数中 选择最小的数,如果最小的数不是1号数,进行交换。以此类推。 下边给出实现代码:void SelectSort(vector<int>& v){

2016-11-20 13:40:24 5895 4

原创 排序算法(三)从直接插入排序到希尔排序

在前边的文章(排序算法系列)中,我们已经介绍过几种排序 算法:冒泡排序、选择排序、直接插入排序、堆排序。直接插入排序 和希尔排序 都是插入排序系列。下边,我们再次以图片的形式解读直接插入排序,以便更好地学习希尔排序。 这样,我们就可以理解直接插入排序了,通过图示分析,我们知道直接插入排序最好的情况,就是接近有序(比如我们要求升序,刚好序列接近升序),这时直接插入排序就是相当快 的;最坏的情况就

2016-11-17 17:07:09 754

原创 map和set

map和set是两个主要的关联容器。关联容器究竟是什么?它和顺序容器有什么区别? 关联容器中的元素是按照关键字来保存和访问的;顺序容器中的元素是按照它们在容器中的位置来顺序保存和访问的。 map和set的底层都是通过红黑树来实现的,即中序遍历得到的序列是关键字的升序排列。然而关联容器还会由map和set衍生出一些类型。 multimap:关键字可以重复的map; multiset:关键字可以

2016-11-15 13:09:44 869

原创 如何判断一棵二叉树是否是完全二叉树

初次学习二叉树这种数据结构的时候,我们知道,假如一棵二叉树的高度是h,对于一棵完全二叉树,它的前h-1行一定是满的,第h行可以满也可以不满(结点必须集中于最后一行的左边),如果满则是满二叉树,不满的就是完全二叉树。概念描述不是很清晰~下边画图说明吧。 那么知道这些概念之后,我们要如何判断一棵二叉树是否是完全二叉树??? 1)如果一个结点有右孩子而没有左孩子,那么这棵树一定不是完全二叉

2016-11-13 21:00:42 15045

原创 如何将搜索二叉树转换成有序双向链表

在前边学习了搜索二叉树之后,我们知道,搜索二叉树的中序遍历结果是一个升序序列,如果我们可以利用二叉树的中序线索化的方法将搜索二叉树进行转换。 每一次转换时,我们需要记住当前结点的上一个结点prev,让prev的right指向当前结点cur,让cur的left指向prev,然后改变prev即可。线索化完成之后,我们需要找原来搜索二叉树的最左结点,即就是转换后的双向链表的头~ 下边给

2016-11-13 16:51:26 905

原创 写出一个不能被继承的类

我们知道,一个类之所以可以被继承到子类,是因为该类的构造函数和析构函数都是公有的(因为构造子类的时候,一定是先要调用父类的构造函数)。如果我们将一个类的构造函数和析构函数都写成私有或者保护,那么它就不会被继承下去。看下边的代码:class B{public: static B& GetObject() { return *(new B); }privat

2016-11-12 16:35:02 807

原创 只能在堆(或栈)上生成对象的类

看到这样的题目,我们首先必须明白的是,哪些变量或者说是对象是在堆上,哪些不是在堆上,这个问题,在前边的文章中已经分享过,这里,再次分享~请看图~ 知道了这些之后,我们开始分析这次分享的主题~ 1.写出一个只能在堆上生成对象的类。 方法一:要想只能在堆上生成对象,也就是说,局部对象,静态对象,全局对象都不能生成,那么我们可以将构造函数写成私有或者保护(类外不可以直接访问的),通过new来构

2016-11-11 19:14:04 797

原创 大数据问题

在学习c语言阶段,大家肯定都写过这样的一个程序:求一个数的阶乘。细心的同学,可能在编码的时候,会注意这个数的情况~如果给定数据过大,阶乘的结果可能会溢出~关于比较大的数的阶乘,我们就会采取别的办法~关于具体的代码,之后的文章将会为大家分享~ 再如,学习堆的时候,我们遇到这样的问题:N个数据中求取最大的前K个数,如果N不是很大,我们可以采取快排,然后选取的办法来解决~如果N很大,可以选择分组或者建堆

2016-11-10 12:58:35 651

原创 【数据结构】布隆过滤器

1.布隆过滤器的引入: 我们知道,在海量整形数中查找一个数字是采用位图来完成的;如果要在海量的字符串中查找一个字符串是否在其中,位图就是无法解决的,所以引入了布隆过滤器。2.布隆过滤器的概述: 布隆过滤器是由布隆这个人提出的,它是由一系列的二进制向量和一些映射函数来实现的,它主要用于检索一个字符串是否在一个集合中,并且空间效率和查询时间都是远远超过一般的算法,还可以表示全集,其

2016-11-08 22:25:00 733

原创 【面试题】给40亿个无符号不重复且没排过序的数,查找一个数是否在这40亿个数之中

看到这样一道面试题,我们不由的想到前边学习过的哈希表,哈希表查找效率高,唯独就是 空间浪费有点大。而在这道题目之中,40亿个无符号数(表明最高位表示大小),几乎涵盖了整形里的所有的数(总共42亿9千多)。而42亿9千多的数全部放到内存大约需要4G*4 = 16G,加上操作系统,各种运行软件,我们普通的计算机是无法运行这42亿数字的,除非超级计算机。所以,按照将每个数字都占用一个整形空间的方式导入内存

2016-11-07 11:24:11 1960

原创 【数据结构】哈希表

哈希表(散列表),是通过关键字key而直接访问在内存存储位置的一种数据结构,它就是 以空间换取时间。通过多开辟几个空间,来实现查找的高效率。 对于哈希表,我们并不是很陌生:在c语言学习阶段,给定一个字符串,查找第一个只出现过一次的字符;在数据结构 矩阵的高效转置方法中,计算原矩阵中每一列中有效数字的个数;在文件压缩项目(之后给出分析总结)中,计算中文件中各个字符出现的次数。 对于构造哈希表,有以

2016-11-04 20:37:32 1083

原创 浅析红黑树

红黑树是一棵二叉搜索树,只是它在以前的二叉树的基础上对每个结点增加了一个特性:颜色特性,或为红色或为黑色。红黑树通过保证最长路径不超过最短路径的两倍来保证近似平衡。 红黑树是满足以下特点: 1)每个节点不是红色就是黑色; 2)根节点是黑色的; 3)如果一个结点是红色,它要么没有子节点,要么子节点是黑色。(不能由连续 的红色结点) 4)对于每一个结点,从该节点

2016-11-02 19:52:22 819

electron-quick-start-master.rar

electron工具,这是我上传的,这个工具很好用,真的很好用,不信你试试

2020-07-16

空空如也

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

TA关注的人

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