Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

判断二叉树是否为完全二叉树

判断二叉树是否为完全二叉树

判断二叉树是否为完全二叉树。完全二叉树的定义是,前n-1层都是满的,第n层如有空缺,则是缺在右边,即第n层的最右边的节点,它的左边是满的,右边是空的。这个问题的描述已经提示了解法,采用广度优先遍历,从根节点开始,入队列,如果队列不为空,循环。遇到第一个没有左儿子或者右儿子的节点,设置标志位,如果之后再遇到有左/右儿子的节点,那么这不是一颗完全二叉树。这个方法需要遍历整棵树,复杂度为O(N),N为节点的总数。#include<iostream> ...
数据结构中各种排序的思路

数据结构中各种排序的思路

排序算法中的稳定和不稳定指的是什么?若在待排序的纪录中,存在两个或两个以上的关键码值相等的纪录,经排序后这些记录的相对次序仍然保持不变,则称相应的排序方法是稳定的方法,否则是不稳定的方法。内部排序和外部排序根据排序过程中涉及的存储器不同,可以讲排序方法分为两大类:一类是内部排序,指的是待排序的几率存放在计算机随机存储器中进行的排序过程;另一类的外部排序,指的是排序中要对外存储器进行访问的排序过程。内部排序是排序的基础,在内部排序中,根据排序过程中所依据的原...
为什么存在内存对齐

为什么存在内存对齐

说到内存对齐,很多人都知道是怎么回事。但是内存对齐该娘不是本文的重点,本文的重点是内存对齐有什么好处。CPU访问某个数据时,要求其存储地址必须是相应数据类型的自然边界。对于存储地址不在其相应类型自然边界的数据,不支持非对齐数据访问的CPU,会导致CPU异常;即使是支持非对齐数据访问的CPU,也会严重影响程序效率。假设非对齐访问出现在位于操作系统之上的进程,且CPU不支持非对齐数据访问,那么对于出现CPU异常的情况,可能操作系统会对其进行处理,(1)将所需要...
map实现之红黑树

map实现之红黑树

红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。红黑树是一种很有意思的...
后序遍历求解判断一颗二叉树是否为平衡二叉树

后序遍历求解判断一颗二叉树是否为平衡二叉树

题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。有了求二叉树的深度的经验之后再解决这个问题,我们很容易就能想到一个思路:在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度。如果每个结点的左右子树的深度相差都不超过1,按照定义它就是一棵平衡的二叉树。这种思路对应的代码如下:bool IsBalanced(BinaryTreeNode* pRoot) ...
算法复杂度为O(N) 的排序算法

算法复杂度为O(N) 的排序算法

题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。分析:排序是面试时经常被提及的一类题目,我们也熟悉其中很多种算法,诸如插入排序、归并排序、冒泡排序,快速排序等等。这些排序的算法,要么是O(n2)的,要么是O(nlogn)的。可是这道题竟然要求是O(n)的,这里面到底有什么玄机呢?题目特别强调是对一个公司的员工的年龄作排序。员工的数目虽然有几万人,但这几万员工的年龄却只有几十种可能。上班早的人...
选择排序算法及其性能分析

选择排序算法及其性能分析

打算用python把所有的排序都写一遍。不过搞笑地是,才写了个简单的选择排序就遇到了不少问题。选择排序的基本原理这里就不讲了,可以参考维基百科。具体思路: 刚开始时按照自已的思路写的Slect_sorting1(),还停留在刚进大学的水平,主要问题是每次选择的时候都会交换此时找到的最小值,即产生了不必要的交换次数。 改进算法主要是将数组交换次数降到最低,Slect_sorting2()是中间出错的一个例子,贴出来有兴趣的可以看看,最后写出来的是Sl...
Spark1.4.1中sparkR的编译使用全过程

Spark1.4.1中sparkR的编译使用全过程

本文针对那些和我一样,对spark还挺熟悉但对R知之甚少甚至之前没听过的同学,在spark引入了sparkR后才开始零基础地开始学习使用。如果你本身对R和sparkR已经很熟悉了,就不用看了。本文主要包含的内容:spark1.4.1编译sparkR使用环境配置sparkR的第一个例子spark1.4.1编译首先从spark官网下载spark1.4.0或者1.4.1的源码,并解压。 要使用sparkR,必须要先用带有sparkR的参数的编译命令,把spark...
C++类中静态变量和静态方法使用介绍

C++类中静态变量和静态方法使用介绍

静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。 静态数据成员 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态...
C# 加密–RSA前端与后台的加密&解密

C# 加密–RSA前端与后台的加密&amp;解密

1. 前言本问是根据网上很多文章的总结得到的。2. 介绍 RSA加密算法是一种非对称加密算法。 对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到2016年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用...
AngularJS 初步认识

AngularJS 初步认识

代码稍多,请自行打开一、前言早已听说AngularJS的大名,并在很久前也编写过些小demo,但是都没有系统学习过。由于,在下个版本项目中用到了AngularJS,so,那就一起再来研究研究呗。说到,这个AngularJS,其核心就是对HTML标签的增强。何为HTML标签增强?其实就是使你能够用标签完成一部分页面逻辑,具体方式就是通过自定义标签、自定义属性等,这些HTML原生没有的标签/属性在ng中有一个名字:指令(directive)。至于说Angula...
AngularJS指令学习进阶

AngularJS指令学习进阶

紧接上篇“AngularJS 初步认识”http://www.linuxidc.com/Linux/2016-08/134158.htm一、前言在AngularJS中指令尤为重要且内容庞多,固单独提炼出来,梳理一番。如有错误,请不吝讲解。好了,言归正传,让我们一起走进Angular指令的世界。在上篇文章的前言部分提到,Angular的核心就是对HTML标签的增强。我们用到的诸如ng-app、ng-controller等等这些都是属于...
JavaScript正则表达式详解

JavaScript正则表达式详解

在JavaScript中,正则表达式由RegExp对象表示。RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下://直接量var re = /pattern/[g | i | m];//构造函数var re = new RegExp(["pattern", ["g" | "i" | "m"]]);其中,末尾的可选字符(g、i和m)分别表示: g: 模式执行一个全局匹配。简而言之,就是找到所有匹配,而不是在找到第一个之后就停止...
<< 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 >>