- 浏览: 600351 次
- 来自: ...
最新评论
-
lgh1992314:
相同的元素呢
一种离散化方法 -
HelloSummerR:
圆心的位置是随机的,于是圆的部分会落到canvas外,那样就显 ...
HTML5 Canvas学习笔记(1)处理鼠标事件 -
hlstudio:
好久没见到sokuban了,这有个java版的,带源码,可以参 ...
求推箱子的最小步数(java) -
肖泽文:
太好了,谢谢你。。有中文注释!
HTML5 推箱子游戏过关演示动画 -
swm8023:
删除操作,将最后一个叶子节点插入后也有可能上浮吧
彻底弄懂最大堆的四种操作(图解+程序)(JAVA)
文章列表
网上代码很多的,找个易理解的学习。
基本思想:希尔排序把n个元素按一定的间隔分成几组,然后按组为单位进行插入排序。 。
将待排记录序列以一定的增量间隔h 分割成多个子序列,对每个子序列分别进行一趟直接插入排序, 然后逐步减小分组的步长h ,对于每一个步长h 下的各个子序列进行同样方法的排序,直到步长为1 时再进行一次整体插入排序。
因为不管记录序列多么庞大,关键字多么混乱,在先前较大的分组步长h下每个子序列的规模都不大,用直接插入排序效率都较高。 尽管在随后的步长h递减分组中子序列越来越大,但由于整个序列的有序性也越来越明显,则排序效率依然较高。这种改进抓住了直接插入排序的两点 ...
插入排序(JAVA)
- 博客分类:
- 排序
网上的代码太多了,找些易理解的。
我们把数组分为已排序和未排序两部分,把未排序的元素一次一个插入到已排序部分的合适位置上。已排序部分逐渐增大,直到整个数组变成有序的。
下面通过一个例子来说明这个排序流程:
待排序列: 49, 38 , 65 , 97, 76 , 13, 27 ,49
插入49: 49
插入38: 38, 49
插入65: 38, 49, 65
插入97: 38, 49, 65, 97
插入76: 38, 49, 65, 76, 97
...
JAVA排序的代码网上很多的。找些易理解的。
选择排序十分容易理解。可以理解为有一个盘子,里面装着很多钻石,你可以从里面拿钻石,但一次只可以拿一颗。第一次你当然会拿最大的出来了,第二次你将拿剩下的钻石中最大的。
第一趟从0到n-1中找到最大的元素,假设为a[max],把a[max]与a[0]交换,这时a[0]是最大的了。第二趟从1到n-1中找到最大的元素(a[0]已经是有序的了,我们不用再管它),把这时的最大元素a[max]与a[1]交换,如此类推。
static void sort(int[] array) {
int length = array ...
单项选择题
(C) 1. 不含任何结点的空树 。
(A)是一棵树; (B)是一棵二叉树;
(C)是一棵树也是一棵二叉树; (D)既不是树也不是二叉树
(C) 2.二叉树是非线性数据结构,所以 。
(A)它不能用顺序存储结构存储; (B)它不能用链式存储结构存储;
(C)顺序存储结构和链式存储结构都能存储; (D)顺序存储结构和链式存储结构都不能使用
(C) 3. 具有n(n>0)个结点的完全二叉树的深度为 ...
import java.util.*;
public class BinaryTree {
protected Node root;
public BinaryTree(Node root) {
this.root = root;
}
public Node getRoot() {
return root;
}
/** 构造树 */ ...
填空:
1. 由3个结点所构成的二叉树有(5)种形态。
2. 一棵深度为6的满二叉树有 ( 31 ) 个分支结点和( 32 ) 个叶子。
注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。
3. 一棵具有257个结点的完全二 ...
题:对于下图的二叉树,输出其嵌套括号表示
import java.util.*;
public class BinaryTree {
protected Node root;
public BinaryTree(Node root) {
this.root = root;
}
public Node getRoot() {
return root;
}
...
下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)
( √ )1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
( × )2.二叉树中每个结点的两棵子树的高度差等于1。
( √ )3.二叉树中每个结点的两棵子树是有序的。
( × )4.二叉树中每个结点有两棵非空子树或有两棵空子树。
( × )5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。 (应当是二叉排序树的特点)
( × )6.二叉树中所有结点个数是2^(k-1)-1,其中k是树的深度。 ...
代码来自教科书。
public class MyLinkedList<T> implements Iterable<T>
{
private int theSize;
private Node<T> begin;//头指针,哑的,第一个数据的前面
private Node<T> end;//尾指针,哑的,最后一个数据的后面
public MyLinkedList( )
{
clear( );
}
public void clear( ...
设完全二叉树的高度为K:
题:设一棵完全二叉树有700个结点,则这棵完全二叉树共有多少个叶子结点?
解:完全二叉树中,度为1的节点的个数只可能为0或1,且出现在倒数第二层上。当完全二叉树的总节点数n为偶数时,n1=1;
当完全二叉树的总节点数n为奇数时,n1=0;
根据 n=n0+n1+n2
n2=no-1;
有:700=no+1+n0-1=2no
所以:度为0的叶子节点数是n0=350;
若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权.
哈夫曼树的构造:
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为 ...
《数据结构与算法分析》JAVA语言描述(第二版)PDF电子书–Mark.Allen.Weiss著。
下载地址1:
http://kuai.xunlei.com/d/BDRJZHAVTATA
下载地址2:
http://download.csdn.net/detail/f363045174/3874247
北大 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 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 10 ...
《数据结构与算法分析》JAVA语言描述(第二版)源码–Mark.Allen.Weiss著
下载源码:
//二叉搜索树
public class BinarySearchTree<T extends Comparable<? super T>>
{
/**
* 构造一棵空树.
*/
public BinarySearchTree( )
{
root = null;
}
/**
* 在二叉搜索树中插入数据.
* @param x the item to insert.
*/
public void insert( T x )
...