自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(28)
  • 资源 (7)
  • 收藏
  • 关注

转载 字符串全排列:输入一个字符串,打印字符串元素的所有排列

字符串全排列

2013-10-20 14:47:45 1303

原创 输入整数数组,调整顺序,使得奇数位于前半部分,偶数位于后半部分

/** * 题目描述: * 输入一个整数数组,程序对数组进行整理,使得奇数和偶数分开。 * 奇数位于数组前半部分,偶数位于数组前半部分都可以。 * * 分析: * 此题可以用快速排序的方法,维护两个游标 i 和 j; * i 从前向后,碰到偶数跳过去,碰到奇数停止; * j 从后向前,碰到奇数跳过去,碰到偶数停止; * 两者停止后,若i < j , 则交换i,j所指元素,i+

2013-10-20 11:16:11 2454

转载 二叉树题目

1. 二叉树的三种遍历方式先序遍历:节点 -> left子节点(包括其子树)-> right子节点(包括其子树);后序遍历:left子节点(包括其子树)-> right子节点(包括其子树)-> 节点;中序遍历:left子节点(包括其子树)-> 节点 -> right子节点。2. 怎样从根开始逐层打印二叉树结点数据其实就是广度优先遍历(BFS)的思想。使用一个队列

2013-10-17 19:51:54 1085

转载 栈和队列题目

1. 设计含min函数的栈,要求min,push和pop时间复杂度都是O(1)。设计一个辅助栈,存储当前栈中元素的最小值。Push操作时,第一个元素不用比较,自动成为最小值入栈,其它元素每次都和栈顶元素比较,小的那个放到栈顶。注意:这里如果当前辅助栈顶元素小于新元素,则把辅助栈顶元素再入栈一次。Pop的时候,同时从原栈和辅助栈pop。所以,原栈和辅助栈大小相等。2. 用两个栈实现队列

2013-10-17 16:00:26 1562

转载 单链表题目

1. 单链表反转一个指针(引用)curr指向原链表头;头指针head指向当前头(开始时指向原链表头),循环开始:next指向curr下一个节点,即next = curr.next;nextNext指向next下一个节点,即nextNext = next.next;(前两步根据curr更新next和nextNext的位置)next.next = head; head = next

2013-10-17 12:39:42 1241

转载 二叉堆

二叉堆是一棵完全二叉树,这个性质保证二叉堆可以用一个简单数组(Array)表示。根元素放在 Array[ 1 ] 处(Array[ 0] 不使用)。对数组中任一位置i上的元素,其左二子在位置2i上,右儿子在左儿子后的单元 2i+1 上,它的父亲则在位置 ⌊ i/2 ⌋ 上。堆序性质堆中任意节点小于它的所有后裔(最小元素在跟上)。insert在下一个可用位置创建一个空

2013-10-17 11:56:45 934

原创 优先队列(堆)目录

优先队列是至少存在以下两种操作的数据结构:insert:插入;deleteMin:找出,返回并删除优先队列中最小的元素。优先队列的实现:二叉堆

2013-10-17 11:32:24 774

转载 散列(Hash)目录

分离链接法

2013-10-17 11:02:37 1545

转载 树目录

二叉查找树AVL树伸展树红黑树

2013-10-17 10:59:43 822

原创 线性表目录

表栈队列

2013-10-17 10:53:38 743

原创 桶排序

输入数据A1,A2,...,AN 必须只有小于M的正整数组成。使用一个大小为M的称为count的数组,它被初始化为全0;count有M个单元(桶),初始为空;当读 Ai 时,count [Ai] 增 1;所有输入数据读入后,扫描数组count,打印出排序后的表。算法复杂度为 O(M+N)。

2013-10-17 10:39:55 757

转载 动态规划

动态规划

2013-10-16 21:47:54 714

转载 递归问题(Recursive)

定义当一个函数用它自己来定义时就称为是递归的。基本原则1. 基本情形。必须总要有某些基准的情形,它们不用递归就能求解。2. 不断推进。对于那些要递归求解的情形,递归调用必须总能够朝着一个基准情形推进。例子

2013-10-16 21:35:18 1188

转载 图算法 最小生成树 Prim算法 Kruskal算法

最小生成树一个无向图G的最小生成树就是由该图的那些连接G的所有顶点的边构成的树,且总价值最低。Prim算法Prim算法把每一个节点一个一个加在最小生成树上,是贪心算法。算法的每一阶段都可以通过选择边(u,v)使得(u,v)的值是所有u在树上但v不在树上的边的值中最小者而找到一个新的顶点并把它添加到这棵树中。下面示意从v1开始构建最小生成树Kruskal算法

2013-10-07 22:52:49 1601

转载 图算法 网络流问题

一个有向图G = (V,E),边容量为c(v,w)。一个发点s,一个收点t。最大流问题是确定s到t可以通过的最大流量。左边为原图G,中间位流图Gf,表示算法任意阶段已经达到的流(初始为0),右边为残余图Gr,表示对于每条边还能再添加上多少流。在每个阶段,寻找Gr中从s到t的一条路径(增长通路)约定,一旦注满一条边,则这条边就要从残余图中除去。当发现Gr中没有通路时算法终止。

2013-10-07 22:22:49 1906

转载 图算法 无圈图和关键路径分析

无圈图如果已知图是无圈的,则可以利用拓扑顺序选择顶点来改进Dijkstra算法。由于选择和更新可以在拓扑排序执行的时候进行,因此算法能够一趟完成。因为当一个顶点v被选取之后,按照拓扑排序法则它没有从unknown顶点发出的进入边,因此它的距离dv可不再被更新。这样的话,就不需要优先队列了。运行时间为O(|E| + |V|)。关键路径分析如图,每个节点表示一个必须执行的动作以

2013-10-07 21:56:22 3557

转载 图算法 具有负边值有向图的单源最短路径

Dijkstra对具有负边值得图是无效的。对于负边值得图:1. 开始时,把s放进队列2. 在每一阶段让一个顶点v出队,找出所有与v邻接的顶点w,使得dw > dv + c(v,w)。更新这些点的dw和pw,并在w不在队列中的时候把它入队。(可以为每个顶点设置一个比特位以指示它是否在队列中)。3. 重复以上过程直到队列为空。void weightedNegative(Vert

2013-10-07 21:24:12 3107 1

转载 图算法 Dijkstra算法 赋权图的单源最短路径

Dijkstra是解决有向赋权图单源最短路径问题的算法,是贪心算法的典型代表。1. 在每个阶段,Dijkstra算法选择一个顶点v,它在所有unknown顶点中具有最小的dv,同时算法声明从s到v的最短路径是known的。2. 更新dw值,若dv + c(v,w)是一个改进的值时,我们就置dw = dv +  c(v,w)。顶点Vertex的定义如下:class Vertex{

2013-10-07 21:07:36 2985

转载 图算法 单源最短路径问题 无权最短路径

单源最短路径问题给定一个赋权图 G = (V, E)和一个特定顶点s作为输入,找到s到G中每一个其他顶点的最短赋权路径。无权最短路径

2013-10-07 17:51:23 4222

转载 图算法 图的表示(邻接表和邻接矩阵)和拓扑排序

图的表示图有两种表示方法,分别是邻接矩阵和邻接表。这里以有向图为例说明。邻接矩阵邻接矩阵是一个二维数组A。对于每条边 (u,v),置A[u][v]等于true;否则,数组元素为false。如果边有一个权,那么可以置A[u][v]等于该权,而使用一个很大或者很小的权作为标记表示不存在的边。它的空间需求为Θ(|V|^2)。邻接表大多数情况,图都是比较稀疏的,

2013-10-07 14:26:23 6999

原创 归并排序(MergeSort)Java实现

归并排序以O(NlogN)最坏情形时间运行。基本操作是合并两个已排序的表。因为两个表已经排序,将输出放在第3个表中,可以通过对输入数据一趟排序来完成。基本的合并算法是1. 取两个输入数组A和B,一个输出数组C,以及3个计数器Ac, Bc, Cc,他们初始置于对应数组的开始端;2. A[Ac] 和 B[Bc]中的较小者被拷贝到C中的下一个位置,相关的计数器向前推进一步;3. 当两

2013-10-07 11:55:37 3508

原创 排序算法目录

冒泡排序选择排序插入排序希尔排序堆排序合并排序快速排序桶式排序

2013-10-07 11:36:11 888

原创 堆排序 Java实现

/** * 堆排序 * * 利用优先队列,以 O(NlogN)时间排序 * 1.利用数组元素建立二叉堆,花费O(N)时间 * 2.执行N次deleteMax操作,得到N个元素的排序。每个deleteMax花费O(logN),总花费O(NlogN). * * 具体过程: * 1.以线性时间建立一个最大二叉堆 ; * 2.每次将堆中第一个元素(树根)与最后一个元素交换,堆的大小

2013-10-07 11:26:49 868

原创 希尔(Shell)排序 Java实现

在插入排序中,已经知道,通过交换相邻元素进行排序的任何算法平均都需要Ω(N^2)时间。基于这种认识,希尔排序通过比较相距一定间隔的元素来工作。各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。因此,希尔排序也叫缩减增量排序。希尔排序使用一个序列h1, h2, ..., ht, 叫做增量序列。只要h1 =1, 任何增量序列都是可以的,但在增量上是有文章可做的,一些

2013-10-07 10:18:43 1018

转载 红黑树 自底向上和自顶向下插入, 自顶向下删除

本文主要参考 Mark Allen Weiss 的 Data Structures and Algorithn Analysis in Java (Second Edition) 的中译本,对其中省略的地方进行了补充。什么是红黑树?红黑树本质上是二叉查找树,但增加了一些性质,使这种二叉查找树更加平衡,使得对其操作最坏情况花费O(logN):1) 每一个节点或者为红,或者为黑;2)

2013-10-06 12:01:51 4388

转载 Java知识点复习2 与运行环境交互

1. Java命令行参数 //可以以空格为分割传入命令行参数。 //若参数本身含有空格,则用双引号括起来 public static void main(String[] args) { System.out.println(args.length); for(String arg : args){ System.out.println(args); } }

2013-10-05 19:13:53 763

转载 Java知识点复习1基础备忘

1. Java命名习惯1)包名字母一律小写;2)类名,接口名应该使用名词,每个单词首字母大写;3)方法名,第一个单词小写,后面每个单词首字母大写;4)变量名,第一个单词小写,后面每个单词首字母大写;5)常量名中的每个字母一律大写。2. 垃圾回收(gc)1)后台线程;2)管理堆内存;3)两件基本任务:发现无用对象;回收无用对象所占空间。

2013-10-05 18:34:37 700

原创 最长公共子序列(LCS)和最长公共子串(LCSubString)

最长公共子序列public class LCS{ public static String lcs(String a, String b) { int[][] lengths = new int[a.length()+1][b.length()+1]; // row 0 and column 0 are initialized to 0 al

2013-10-05 15:54:45 1582

Java核心技术第8版 卷I 基础知识part2 中文版 有目录可标记

Java核心技术卷I 基础知识,中文版 原来文件太大,所以分2卷,这是第2卷; 里面是pdf文档,本来是扫描版,我对它做了ORC,并添加了目录,看起来应该挺方便,可能有我看的时候加的高亮,如果不喜欢可以自己看的时候删掉

2013-01-08

Java核心技术第8版 卷I 基础知识part1 中文版 有目录可标记

Java核心技术卷I 基础知识,中文版 原来文件太大,所以分2卷,这是第1卷; 里面是pdf文档,本来是扫描版,我对它做了ORC,并添加了目录,看起来应该挺方便,可能有我看的时候加的高亮,如果不喜欢可以自己看的时候删掉

2013-01-08

Java核心技术第8版 卷II 高级特性part3 中文版 有目录可标记

Java核心技术卷II 高级特性,中文版 原来文件太大,所以分3卷,这是第3卷; 里面是pdf文档,本来是扫描版,我对它做了ORC,并添加了目录,看起来应该挺方便,可能有我看的时候加的高亮,如果不喜欢可以自己看的时候删掉

2013-01-08

Java核心技术第8版 卷II 高级特性part2 中文版 有目录可标记

Java核心技术卷II 高级特性,中文版 原来文件太大,所以分3卷,这是第2卷; 里面是pdf文档,本来是扫描版,我对它做了ORC,并添加了目录,看起来应该挺方便,可能有我看的时候加的高亮,如果不喜欢可以自己看的时候删掉

2013-01-08

Java核心技术第8版 卷II 高级特性part1 中文版 有目录可标记

Java核心技术卷II 高级特性,中文版 原来文件太大,所以分3卷,这是第1卷; 里面是pdf文档,本来是扫描版,我对它做了ORC,并添加了目录,看起来应该挺方便,可能有我看的时候加的高亮,如果不喜欢可以自己看的时候删掉

2013-01-08

Java编程思想第四版中文有目录

Java编程思想,中文第四版,非扫描版,Java学习必备书籍之一

2013-01-08

C++程序间消息模式通信(VS2010工程文件)

是纯C++的Windows进程通信的发送程序,基于消息模式通信,因此可以发送给任意一个窗口,只要指定窗口名字即可。 接受程序可以根据发送程序写,一看就明白了。 非MFC,方便直接加到其他代码中。 里面是VS2010的整个工程文件,直接编译运行

2012-11-22

空空如也

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

TA关注的人

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