自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 最小生成树:Prim算法(两种方法)(java)

[img]http://dl.iteye.com/upload/attachment/0073/0811/1d623560-baf1-3137-9a07-3f84f61e8c74.jpg[/img] [code="java"]import java.util.Scanner;方法一:时间复杂度O(n^3)class Edge { /** * 边的起点 ...

2012-08-30 16:12:11 301

原创 用数组实现的优先队列(JAVA)

优先级队列是不同于先进先出队列的另一种队列。每次去队列的是具有最高优先权的元素。[code="java"]import java.util.Comparator;public class PriorityQ { private final int SIZE = 20; private T[] queArray; private int s...

2012-08-28 17:52:45 160

原创 归并排序(JAVA)

并归排序: 将两个或两个以上的有序数组组合成一个新的有序数组,叫并归排序排序过程1、 设初始数组有n个数据,则可看成n个有序的子数组, 每个子数组长度为1;2、 两两合并,得到n/2或n/2+1 个长度为2 或1 的有序子数组; 3、 再两两合并,…… 如此重复,直至得到一个长度为n 的有序数组为止。下面是归并排序的一个简单的例子:初始值 【49】 【38】...

2012-08-27 10:45:41 71

原创 图的邻接矩阵实现及广度优先搜索(JAVA)

[img]http://dl.iteye.com/upload/attachment/0072/8821/3b1e5bfd-3c81-3153-9f2c-9cdcfc595cce.gif[/img][code="java"]import java.util.Queue;import java.util.ArrayDeque;// 顶点类 class Vertex...

2012-08-26 14:09:10 128

原创 图的邻接矩阵实现及深度优先搜索(JAVA)

[img]http://dl.iteye.com/upload/attachment/0072/8819/2c6e4927-0f08-3e44-86af-46ebdefe85dd.gif[/img]遍历,直到图中所有顶点都被访问到为止。[code="java"]import java.util.Stack;// 图的邻接矩阵实现及深度优先搜索图dfs.java//顶点类clas...

2012-08-26 07:23:50 123

原创 图的概义及存储方法

[color=blue]一、概念。[/color]图: 是一种复杂的非线性数据结构。图的二元组定义:图G由两个集合V和E组成,记为: G=(V, E) 其中: V 是顶点的有穷非空集合, E是V中顶点偶对(称为边)的有穷集。 通常,也将图G的顶点集和边集分别记为V(G)和E(G) 。 E(G)可以是空集。若E(G)为空,则图G只有顶点而没有边。有向图...

2012-08-26 07:12:28 78

原创 希尔排序(java)

网上代码很多的,找个易理解的学习。 基本思想:希尔排序把n个元素按一定的间隔分成几组,然后按组为单位进行插入排序。 。 将待排记录序列以一定的增量间隔h 分割成多个子序列,对每个子序列分别进行一趟直接插入排序, 然后逐步减小分组的步长h ,对于每一个步长h 下的各个子序列进行同样方法的排序,直到步长为1 时再进行一次整体插入排序。 因为不管记录序列多么庞大,关键字多么混...

2012-08-25 07:43:53 80

原创 插入排序(JAVA)

网上的代码太多了,找些易理解的。 我们把数组分为已排序和未排序两部分,把未排序的元素一次一个插入到已排序部分的合适位置上。已排序部分逐渐增大,直到整个数组变成有序的。 下面通过一个例子来说明这个排序流程: 待排序列: 49, 38 , 65 , 97, 76 , 13, 27 ,49 插入49: 49 插入38: 38,...

2012-08-25 07:28:31 66

原创 选择排序(java)

JAVA排序的代码网上很多的。找些易理解的。 选择排序十分容易理解。可以理解为有一个盘子,里面装着很多钻石,你可以从里面拿钻石,但一次只可以拿一颗。第一次你当然会拿最大的出来了,第二次你将拿剩下的钻石中最大的。 第一趟从0到n-1中找到最大的元素,假设为a[max],把a[max]与a[0]交换,这时a[0]是最大的了。第二趟从1到n-1中找到最大的元素(a[0]已经是有序...

2012-08-25 06:54:48 62

原创 树与二叉树:选择题50个

单项选择题(C) 1. 不含任何结点的空树 。 (A)是一棵树; (B)是一棵二叉树; (C)是一棵树也是一棵二叉树; (D)既不是树也不是二叉树(C) 2.二叉树是非线性数据结构,所以 。 (A)它不能用顺序存储结构存储; ...

2012-08-23 16:33:38 954

原创 将二叉树所有结点的左右子树交换并输出。

[code="java"]import java.util.*; public class BinaryTree { protected Node root; public BinaryTree(Node root) { this.root = root; } ...

2012-08-23 08:06:22 524

原创 二叉树:填空题

填空:1. 由3个结点所构成的二叉树有(5)种形态。 2. 一棵深度为6的满二叉树有 ( 31 ) 个分支结点和( 32 ) 个叶子。 注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。3. 一棵具有257个结点的完全二叉树,它的深度为 ( 9 )。 注:用[log2(n)]+1=94. 设一棵完全二叉树有700个结点,则共有 350 ...

2012-08-22 13:17:08 1085

原创 输出给定二叉树的嵌套括号表示(java)

题:对于下图的二叉树,输出其嵌套括号表示[img]http://dl.iteye.com/upload/attachment/0072/3033/114e5346-bf3e-3bf5-b696-7bfbf260a382.gif[/img][code="java"]import java.util.*; public class BinaryTree { ...

2012-08-21 20:52:41 696

原创 二叉树:选择题

下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)( √ )1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。( × )2.二叉树中每个结点的两棵子树的高度差等于1。 ( √ )3.二叉树中每个结点的两棵子树是有序的。 ( × )4.二叉树中每个结点有两棵非空子树或有两棵空子树。 ( × )5.二叉树中每个结点的关键字...

2012-08-21 15:20:43 284

原创 双向链表(java实现)

代码来自教科书。[code="java"]public class MyLinkedList implements Iterable{ private int theSize; private Node begin;//头指针,哑的,第一个数据的前面 private Node end;//尾指针,哑的,最后一个数据的后面 public MyLin...

2012-08-21 11:10:24 143

原创 如何求完全二叉树的叶子节点数?

设完全二叉树的高度为K:[img]http://dl.iteye.com/upload/attachment/0072/6339/2bcae9d4-c578-302b-bfa1-ee2292f2bfa5.gif[/img]题:设一棵完全二叉树有700个结点,则这棵完全二叉树共有多少个叶子结点?解:完全二叉树中,度为1的节点的个数只可能为0或1,且出现在倒数第二层上。当完全二叉树...

2012-08-20 22:21:10 359

原创 哈夫曼树及哈夫曼编码的实现(java)

若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权.哈夫曼树的构造:假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:  (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);   (2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、...

2012-08-20 11:59:08 260

原创 《数据结构与算法分析》JAVA(第二版)电子书–Mark.Allen.Weiss

《数据结构与算法分析》JAVA语言描述(第二版)PDF电子书–Mark.Allen.Weiss著。[img]http://dl.iteye.com/upload/attachment/0072/5212/0f352fec-37db-342b-b743-2a37d74a973d.gif[/img]下载地址1:[url]http://kuai.xunlei.com/d/BDRJZHAVTA...

2012-08-19 07:57:32 239

原创 PKU JudgeOnline练习题AC源码1600个(C或C++)

北大 JudgeOnline练习题AC源码1600个(C或C++)Solved Problems List Solved: 1583 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025...

2012-08-19 06:55:43 293

原创 《数据结构与算法分析》JAVA语言描述(第二版)源码–Mark.Allen.Weiss.

《数据结构与算法分析》JAVA语言描述(第二版)源码–Mark.Allen.Weiss著[img]http://dl.iteye.com/upload/attachment/0072/5212/0f352fec-37db-342b-b743-2a37d74a973d.gif[/img]下载源码:...

2012-08-18 21:20:09 241

原创 二叉查找树及实现

[code="java"]//二叉搜索树public class BinarySearchTree

2012-08-18 20:45:42 61

原创 二叉树的线索化(中序线索二叉树)

对于一个n个节点的链式二叉树,有n+1个空指针域,如果把这些空指针域用来指向当前节点的前驱或者后继,叫做把二叉树线索化。线索化后的二叉树遍历比较方便,不需要递归,效率快。以下使用java实现二叉树的线索化(中序线索二叉树)[code="java"]一、节点类 public class Node { private int data; private Node left;...

2012-08-16 21:12:48 334

原创 二叉树的顺序存储实现(java)

顺序存储对完全二叉树而,简单又节省空间。对于一般二叉树,为了能用结点在数组中的相对位置表示结点之间的逻辑关系,也必须按完全二叉树的形式来存储树中的结点,这必然造成空间的浪费,随着二叉树高度的增大,空结点的数量也会急速增多。 [code="java"]/** * 顺序二叉树 * * @author liuyan */public class ArrayBinary...

2012-08-15 16:58:49 111

原创 求二叉树的一条最长路径

[code="java"]import java.util.*; public class BinaryTree { protected Node root; public BinaryTree(Node root) { this.root = root; } public No...

2012-08-15 07:41:12 379

原创 二叉树的二叉链实现及遍历

建立如图的二叉树并遍历:[img]http://dl.iteye.com/upload/attachment/0072/3033/114e5346-bf3e-3bf5-b696-7bfbf260a382.gif[/img][code="java"]import java.util.*; public class BinaryTree { protecte...

2012-08-14 16:29:21 151

原创 列磁盘目录(深度优先和广度优先实现)

有两种常用的方法可用来搜索图:即深度优先搜索和广度优先搜索。它们最终都会到达所有连通的顶点。深度优先搜索通过栈来实现,而广度优先搜索通过队列来实现。 深度优先搜索: 下面图中的数字显示了深度优先搜索顶点被访问的顺序。[img]http://dl.iteye.com/upload/attachment/0072/1533/87959b91-1b51-31ea-8ca7-53...

2012-08-12 00:01:45 83

原创 线性表自测题一套及解答

自测卷 一、填空1. 在顺序表中插入或删除一个元素,需要平均移动 (表中一半元素),具体移动的元素个数与( 表长和该元素在表中的位置) 有关。2. 线性表中结点的集合是( 有限) 的,结点间的关系是 ( 一对一 ) 的。3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 ( n-i+1 ) 个元素。4...

2012-08-10 21:22:18 272

原创 分治算法

一、分治法的基本思想 任何一个可以用计算机求解的问题所需的计算时间都与其规模N有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。 例如,对于n个元素的排序问题,当n=1时,不需任何计算;n=2时,只要作一次比较即可排好序;n=3 时只要作3次比较即可,…。而当n较大时,问题就不那么容易处理了。要想直接解决一个规模较大的问题,有时是相当困难的。 分治法的设计...

2012-08-10 20:24:13 71

原创 数据结构概论自测题及答案一套

一、填空题...................................二、单项选择题(B)1. 非线性结构是数据元素之间存在一种: A)一对多关系 B)多对多关系 C)多对一关系 D)一对一关系(C)2. 数据结构中,与所使用的计算机无关的是数据的( ) 结构; A) 存储 B) 物理 ...

2012-08-09 21:54:45 271

原创 栈和队列:判断题

二 判断题1. 消除递归不一定需要使用栈,此说法( √ )2. 栈是实现过程和函数等子程序所必需的结构。( √ )3. 两个栈共用静态存储空间,对头使用也存在空间溢出问题。( √ )4.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。( √ )5. 即使对不含相同元素的同一输入序列进行两组不同的合法的入...

2012-08-09 11:35:10 1821

原创 迭代算法

利用迭代算法解决问题,需要做好以下三个方面的工作:  一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。  二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。  三、对迭代过程进行控制。在什么时...

2012-08-09 10:11:53 174

原创 一些经典小问题的算法(java)

1.判断闰年与日、月、年是否有效的函数 四年一闰;百年不闰;四百年再闰。 static boolean isValidDate(int d, int m, int y) { if (d < 1 || m < 1 || m > 12) return false; if (m == 2) { if (isLeapYear(y))...

2012-08-08 17:13:45 53

原创 用数组实现的循环队列(java)

[code="java"]循环队列能充分利用空间,解决队列假上溢现象。import java.io.*;public class QueueArray { Object[] a; /*对象数组,队列最多存储a.length-1个对象,浪费一个存储单元。这是因为如果将数组装满,则队列满和队列空的条件都是: rear=front *为了便于判断,将队...

2012-08-07 19:41:38 101

原创 栈和队列:选择题

1. 对于栈操作数据的原则是( )。 A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序2. 在作进栈运算时,应先判别栈是否( ① ),在作退栈运算时应先判别栈是否( ② )。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③ )。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将...

2012-08-07 16:07:04 452

原创 中缀表达式转后缀表达式并求值(java)

前缀表达式、中缀表达式和后缀表达式都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表达式3 4 + 5 × 6 - 后缀表达式中缀表达式(中缀记法) 中缀...

2012-08-07 13:56:46 107

原创 前缀、中缀、后缀表达式(WORD文档)

前缀表达式就是不含括号的算术表达式,而且它是将运算符写在前面,操作数写在后面的表达式,也称为“波兰式”。例如,- 1 + 2 3,它等价于1-(2+3)。  后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)如:2 1 + 3 *,即(2 + 1) * 3 中缀表达式(或中缀记...

2012-08-06 10:16:45 105

原创 递归算法

递归是指在定义自身的同时又出现了对自身的引用(比如在函数体内直接或间接的调用自己)。如果一个算法直接或间接地调用用自已,则称这个算法是一个递归算法。 任何一个有意义的递归算法总是由两部分组成:递归调用与递归终止条件。如果没有递归终止条件那么递归将会无休止的进行下去,如果没有递归调用,则递归算法就不成其为递归算法。递归算法的执行过程中会多次进行自我调用,这个调用过程是如何...

2012-08-05 18:57:04 143

原创 数据结构概论:判断题

判断题:1. 数据元素是数据的最小单位。( )2. 记录是数据处理的最小单位。 ( ) 3. 数据的逻辑结构是指数据的各数据项之间的逻辑关系;( )4.算法的优劣与算法描述语言无关,但与所用计算机有关。( )5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。( )6.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高...

2012-08-04 12:10:15 1696

原创 线性表:判断题

判断题1. 链表中的头结点仅起到标识的作用。( )2. 顺序存储结构的主要缺点是不利于插入或删除操作。3.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。( )4.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。( )5. 对任何数据结构链式存储结构一定优于顺序存储结构。( )6.顺序存储方式只能用于存储线性结构。( ...

2012-08-04 11:26:52 731

原创 队列的链式实现(java)

单链表实现队列,这里采用带头结点的单链表结构。根据单链表的特点,选择链表的头部作为队首,链表的尾部作为队尾。除了链表头结点需要通过一个引用来指向之外,还需要一个对链表尾结点的引用,以方便队列的入队操作的实现。为此一共设置了两个指针,一个队首指针和一个队尾指针,队首指针指向队首元素的前一个结点,即始终指向链表空的头结点,队尾指针指向队列当前队尾元素所在的结点。当队列为空时,队首指针与队尾指针均...

2012-08-04 10:38:29 93

空空如也

空空如也

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

TA关注的人

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