- 博客(262)
- 资源 (7)
- 收藏
- 关注
原创 二维数组中的查找
这一题给跪,c++死活超时。。。后来main函数改成用c就好了。。。算法:/*题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入
2014-07-14 16:43:32 1099
原创 hash表、hash算法
概念:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为
2014-07-14 14:24:17 2081
原创 判断二叉树是否平衡
题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。注:这里不考虑该二叉树是否是二叉排序树解决要点:1.后序遍历二叉树;2.递归。核心算法:bool isBalanced(pTree pT,int *depth){ if(!pT)//参数判断 { *d
2014-07-13 14:57:48 1275
原创 求二叉树深度
概念:1.二叉树深度:树中结点的最大层次称为树的深度或高度。2.二叉树层次:从根开始定义起,根为第一层,根的孩子为第二层,以此类推。要点:1.递归。2.二叉树深度为左右子树深度较大值+1。代码:/*求二叉树深度by Rowandjj2014/7/13-------------------------------题目描述:输入一
2014-07-13 13:56:06 1347
转载 平衡二叉树(AVL树)
平衡二叉树或者是一颗空树,或者它的左右子树都是平衡二叉树,且左子树和右子树的深度之差不超过1 。BF(Balance Factor)我们将二叉树上节点的左子树深度减去右子树深度的值成为平衡因子。那么平衡二叉树上所有节点的平衡因子只可能是-1,0,1.只要二叉树上有一个节点的平衡引子的绝对值大于1,则该二叉树就是不平衡的。
2014-07-12 15:51:27 1934
原创 【安卓笔记】在拨号界面通过拨打指定号码来启动某个秘密界面
方案说明:1.通过注册广播接收者监听用户拨打电话操作;2.当用户拨打电话时,广播接收者接收到号码,并与指定的”暗号“对比,若匹配,则启动某个界面并且终止用户拨打电话操作。实现:1.在清单文件中配置广播接收者,并添加权限:<receiver android:name="cn.edu.chd.mobilesafe.recei
2014-07-11 22:33:33 2215 2
原创 二叉排序树(BST)
二叉排序树:二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;注:中序遍历一棵二叉排序
2014-07-11 20:21:34 1657
原创 二分查找算法
概念:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
2014-07-11 11:23:40 1753
原创 最短路径之Dijkstra算法
Dijkstra算法:首先,引进一个辅助向量D,它的每个分量D[i]表示当前所找到的从始点v到每个终点vi的的长度:如D[3]=2表示从始点v到终点3的路径相对最小长度为2。这里强调相对就是说在算法过程中D的值是在不断逼近最终结果但在过程中不一定就等于长度。它的初始状态为:若从v到vi有弧,则D为弧上的权值;否则置D为∞。显然,长度为 D[j]=Min{D | vi∈V} 的路径就是从
2014-07-10 19:31:15 2672
原创 最小生成树之克鲁斯卡尔算法
克鲁斯卡尔算法:假设连通网N = {V,{E}},则令最小生成树的初始状态为只有n个顶点而无边的非连通图T = {V,{}},图中每个顶点自成一个连通分量。在E中选择一个最小代价边,若该边依附的顶点落在T中的不同连通分量上,则将此边加入到T中,否则舍去此边而选择下一条最小代价边【最小生成树不存在环】。依次类推,直至T中所有顶点都在同一连通分量上为止。【连通分量:无向图的极大连通子图】
2014-07-09 17:55:05 6157
原创 最小生成树之Prim算法
Prim算法:假设N = (V,{E})是连通网,TE是N上最小生成树中边的集合。算法从U={u0}(u0属于V),TE={}开始,重复执行下述操作:在所有u属于U,v属于V-U的边(u,v)属于E中找到一条代价最小的边(u0,v0)并入集合TE,同时v0并入U,直至U=V为止,此时TE中必有n-1条边,则T=(V,{TE})为N的最小生成树.为实现这个算法,需附设一个辅助数组cl
2014-07-01 13:11:40 2298
原创 有向图的十字链表存储形式
十字链表是有向图的另一种链式存储结构。可以看成是将有向图的邻接表和逆邻接表(只考虑入度)结合起来得到的一种链表。在十字链表中,对应于有向图中每一个顶点有一个节点,每一条弧也有一个结点。顶点之间是数组顺序存储,而弧是链式存储。弧结点结构:顶点结点结构:十字链表形态:实现:/************
2014-06-29 16:32:14 6200
原创 图的存储形式——邻接表
邻接表:邻接表是图的一种链式存储结构。在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的节点表示依附于顶点vi的边(对有向图是以顶点vi为尾的弧)。每个结点有三个域组成,其中邻接点域指示与顶点vi邻接的点在途中的位置,链域指示下一条边或者弧的结点;数据域存储和边或者弧相关的信息,如权值等。每个链表上附设一个表头结点。在表头结点中,除了设置链域指向链表第一个结点之外,还设置有存储顶点vi的名
2014-06-26 12:36:09 2410
原创 图的存储形式——邻接矩阵(数组)
邻接矩阵:用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息。比如考虑下面这个有向图:如果用邻接矩阵存储可以表示为:1.顶点数组:2.邻接矩阵:图的遍历:深度优先(DFS):深度优先搜索遍历类似于树的先根遍历,是树的先根遍历的推广。假设初始状态是图中所有顶点未曾访问过,
2014-06-24 13:56:06 4901
原创 使用优先队列构建赫夫曼树
关于赫夫曼编码和赫夫曼树的相关知识可参考之前两篇文章(由二叉树构造赫夫曼树、赫夫曼编码)。本文介绍另一种构建赫夫曼树的方式,采用优先队列.步骤:1.首先我们需要统计不同字符出现的次数。一个字符出现的次数越多,说明其优先级越高,其赫夫曼编码应该越短;2.将待编码的字符(即带权节点)存入优先级队列,优先级即字符出现的次数;3.不断迭代队列,直到队列中剩下一个元素
2014-06-18 12:20:03 2768
原创 java表达式陷阱
下面将列举一些面试中常见的关于java表达式的问题,我将结果直接以注释的形式附在后面。问题1: int a = 10; int b = a + (a = 5) + a + (a = 10); System.out.println(b);//b = 30问题2: int i = 1; i = (i=i+(i+(i=2)+
2014-06-16 09:32:30 2778 2
原创 找重复数字问题
这是两道面试题,我觉着很有意思。题目本身并不难,只是思路的问题。题目1:现有0-99共100个整数,各不相同,将所有的数放入一个数组,随机排布。数组长度101,多余的数字是0到99其中任意一个数,将重复数字找出。解决方案:暴力迭代那种方式就不说了,这里提供两种比较好的方式:public class Algo1{ public sta
2014-06-16 09:27:15 2292
原创 新生代垃圾回收
之前的两篇文章(java运行时数据区浅析、java垃圾收集器(GC)浅析)介绍了java运行时数据区以及GC垃圾回收算法的相关知识,大家可以先去看看这两篇文章。本篇文章将重点关注新生代的垃圾回收。大部分JVM都会采用所谓的分代收集方式去回收垃圾,什么是分代收集呢?根据对象的存活周期的不同将内存划分为好几块。一般是把java堆分为新生代和老年代,这样就可以根据各个年代的特点采
2014-06-16 09:24:27 4281
原创 赫夫曼编码
构造过程:1.给定一组带权值的节点:2.生成赫夫曼树:3.根据“左0右1”的约定生成编码表实现:/*************************************************赫夫曼编码by Rowandjj2014/6/2**************************
2014-06-02 20:23:11 1687 4
原创 由二叉树构造赫夫曼树
赫夫曼树:假设有n个权值{w1,w2,w3....},试构造一棵具有n个叶子节点的二叉树,每个叶子节点带权为wi,则其中带权路径长度最小的二叉树称为最优二叉树或者叫赫夫曼树。构造赫夫曼树:假设有n个权值,则构造出的赫夫曼树有n个叶子节点,n个权值分别设置为w1,w2,....wn,则赫夫曼树的构造规则为:1.将w1,w2...看成是有n棵树的森林;2.在森林
2014-06-02 16:38:50 1953
原创 孩子兄弟表示法(二叉链表树)
考虑下面这森林:如果用孩子兄弟表示法可以表示为:顾名思义,孩子兄弟表示法的每个节点有两个指针域,一个指向其长子,另一个指向其兄弟.实现:/**************************************************树的孩子兄弟表示法(二叉链表树)by Rowandjj2014/5/25***********
2014-06-02 16:36:23 52381 1
原创 【操作系统】线程
前言:进程的概念包含了两个不同的特点:1.资源所有权;2.调度/执行能力;既然这两个特点是独立的,那么操作系统应该能够独立地处理它们,这就引出了线程的概念。为区分这两个特点,我们把分派的单位称为线程或者轻量级进程,而把拥有资源所有权的单位通常仍称为进程。线程的概念:指操作系统在单个进程内支持多个并发执行路径的能力。线程的优点:1.
2014-06-01 12:23:55 1582
原创 【操作系统】进程描述与控制
前言:开发操作系统是为了给应用程序提供一个方便、安全、一致的访问接口,以屏蔽硬件的复杂性。我们可以将操作系统理解为资源的统一抽象表示,可以被应用程序请求和访问。资源包括内存,文件等,一旦操作系统为应用程序创建了这些资源的抽象表示,就必须管理它们的使用。现代操作系统采用进程来管理应用程序的执行。进程的概念:1.一个具有以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系
2014-05-30 12:07:32 2941 1
原创 二叉树的三叉存储
形态:实现:/***************************************8二叉树的三叉链表存储by Rowandjj2014/5/23*****************************************/#includeusing namespace std;typedef int ElemType; //------
2014-05-24 12:53:37 2303
原创 二叉树的线性存储
/***************************************************二叉树的线性存储by Rowandjj2014/5/23***************************************************/#include#includeusing namespace std;#define MAX 255#define
2014-05-24 12:51:21 2374
原创 java语言安全机制浅析
java通过所谓的沙箱安全模型保证了其安全性,下面我们就来看看java提供的安全沙箱机制。组成沙箱的基本组件如下:1.类装载器结构;2.class文件检验器;3.内置于java虚拟机(及语言)的安全特性;4.安全管理器及java API。一.类装载器体系结构 1.防止恶意代码去干涉善意的代码。 这是通过
2014-05-20 11:55:58 6945
原创 二叉树的二叉链表存储
节点形态:实现:/******************************************二叉树的二叉链表存储by Rowandjj2014/5/18******************************************/#includeusing namespace std;/*二叉树的二叉链表存储表示*/typedef int T
2014-05-19 08:24:53 2426
原创 提防toString递归问题
看这个代码:public class D{ @Override public String toString() { return "obj:"+this; } public static void main(String[] args) { System.out.println(new D()); }
2014-05-15 12:58:02 1825
原创 广义表存储
节点形态:存储结构:每个节点都包含一个标志域,如果为0(即原子),那么仅含一个值域,如果是1(列表),那么说明该节点包含两个指针域。需要注意的是求广义表长度的操作,其实计算的是根节点及其兄弟的个数,比如图2中广义表的长度为2,图3中广义表的长度为4。深度的定义方式是递归式的,定义空表深度为1,原子深度为0,广义表的深度
2014-05-14 23:46:30 3208
原创 稀疏矩阵的十字链表存储表示
十字链表用的不多,但是面试可能会出现,故而记录一下。十字链表节点形态:十字链表形态:实现:/***************************************稀疏矩阵的十字链表存储表示by Rowandjj2014/5/7***************************************/#include
2014-05-08 12:07:28 3995 1
原创 矩阵压缩存储之三元组顺序表
形态:实现:/*****************************************稀疏矩阵的三元组顺序表存储表示by Rowandjj2014/5/3******************************************/#includeusing namespace std;#define MAXSIZE 12500//非零元个数的最大值
2014-05-04 23:19:45 3491
原创 数组顺序存储表示和实现
实现:/***************************************数组的顺序表示和实现by Rowandjj2014/5/2----------------不管是多少维的数组,在内存中都是线性存储的,数组中每个元素都对应着一个物理地址,它们之间满足一个线性的关系。比如,3维数组,3*3*2架构,即A[3][3][2],对应常量为6,2,1bounds
2014-05-02 23:10:29 4183
原创 class文件结构浅析(2)
上一篇讲的都是理论,下面我们亲自实践一下。首先编写一个简单的java类:public class Test{ private int m; private String str; public int func(int m,String str) { str += "OK"; m = 10;
2014-05-02 13:06:48 1813
原创 串的模式匹配算法(KMP)
算法:#includeusing namespace std;#define MAXSIZE 100void calNext(const char *T,int *next);//T为模式串,next为预判数组int kmp_match(const char *S,const char *T);//在主串S中寻找模式串T,如果找到返回其位置,否则返回-1。位置从0开始void
2014-05-01 22:45:34 1441
原创 Class类文件结构浅析
前言 class文件时java虚拟机执行引擎的数据入口,也是java技术体系的基础支柱之一,了解class文件的结构对后面进一步了解虚拟机执行引擎有很重要的意义。概要: class文件是一组以八位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有添加任何分隔符,这使得整个class文件中存储的内容几乎全部都是程序运行的必要数
2014-04-28 22:32:30 2099
原创 java参数传递机制浅析
欢迎转载,转载请声明出处!-----------------------------------------前言:java语言中,参数的传递只有一种机制,那就是值传递。举例:下面将通过几个例子来说明java中的参数传递机制,这些例子基本涵盖了所有参数传递的情况。1.基本数据类型:public static void testBase(int i)
2014-04-28 09:46:47 3646 1
原创 Android真机调试不打印日志解决方案
1、在拨号界面输入:*#*#2846579#*#* 进入测试菜单界面。 2、Project Menu–后台设置–LOG设置 3、LOG开关–LOG打开 LOG级别设置–VERBOSE 4、Dump&Log– 全部选中 5、重启手机
2014-04-26 16:57:56 3573 1
原创 串的堆分配存储表示
示意图:形态:插入:删除:实现:/***********************************************串的堆分配存储表示by Rowandjj2014/4/21***********************************************/#inc
2014-04-22 09:53:29 2207
原创 【安卓笔记】popupWindow使用浅析
概述:popupWindow可以用来实现弹出框效果,弹出框的布局可以任意指定,这个弹出框是悬浮在当前activity之上的。使用方式:1.为popupWindow填充一个布局;2.new出popupWindow实例;3.调用showAsDropDown或者showAtLocation方法显示弹出框.示例:1.popupWindow的布
2014-04-20 22:43:57 2129 1
volley测试代码
2015-02-15
jdbc连接mysql的文档
2013-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人