蜗牛爱上星星

一只贪玩的蜗牛

java实现排序二叉树

* 二叉树排序算法看似很简单,特别是看到其他博客写的实现代码,但是如果把细节各种情况考虑进去,还是不容易的。 * 数据使用链式二叉树来存储,在增加节点的时候,小的在父节点的左边,大的在父节点的右边。刚增加的数据都是叶子节点 * 在删除的时候,可以有三种情况,分别是:(用a表示当前将要删除的节点) ...

2016-01-21 16:52:14

阅读数 386

评论数 0

数据结构与算法

1、归并排序 package com.huai.test; /** * Created by liangyh on 15-12-19. * 归并算法 */ public class SortTest { public static void main(String arg...

2015-12-19 16:45:24

阅读数 329

评论数 0

大数相乘--极简单的思路

大数相乘,面试常见的题型,如何计算两个打算相乘? public class Test1 { public void multi(char[] a,char[]b){ int alen = a.length; int blen = b.length...

2015-11-25 22:33:57

阅读数 416

评论数 0

java位运算应用

1.  判断int型变量a是奇数还是偶数          a&1  = 0 偶数       a&1 =  1 奇数  2.  求平均值,比如有两个int类型变量x、y,首先要求x+y的和,再除以2,但是有可能x+y的结果会超过int的最大表示范围,所以位运算就派上用场啦。...

2015-11-25 09:23:18

阅读数 408

评论数 0

关于负数的补码

正数的补码、反码是源码本身 源码--》补码:对应正数二进制表示的所有位取反,然后加一。 补码--》源码:对应正数二进制表示的所有位取反,然后加一。 补码的绝对值:(因为整数的补码就是源码,所以这里的补码指的就是负数的补码) 若要得到一个负二进制补码的数值,只要对补码全部取反并加1,就可得到...

2015-11-25 08:45:51

阅读数 939

评论数 0

Dijkstra算法--有向图的源点到其他顶点的最短路径(连接矩阵、邻接矩阵两种方式)

引子: Dijkstra算法:某个顶点到其他顶点的最短路径。 以下面这个图为例:其中源点是A。关键点:维护一个二维数组,具体见下面: 1、首先,派一名调查员驻扎在A处,在A处,a调查员能够知道与A相连的B和D的路径长度,在笔记本上记着下面图片1的信息。接下来选择没有驻扎调查员、和A直接相...

2015-09-18 13:36:50

阅读数 5778

评论数 1

无向图的最小生成树(克鲁斯卡尔算法 Kruskal)

引子: 克鲁斯卡尔算法 Kruskal的构造过程: 1、初始化图:n个顶点,n个连通分量(如果两个顶点的连通分量相同,表示两点在同一个连通图中)。把所有的边(包含两个顶点)放入优先级队列中,从小到大。 2、选择最小权重的边,如果这个边的头顶点的和尾顶点的连通分量不同,则合并头和尾两个分量(整个...

2015-09-16 22:20:51

阅读数 1326

评论数 1

无向图的最小生成树(prim算法)

引子: 假设整个无向图中的点记为A,最小生成树中的点记为T,其他点记为Q(也就是Q= A-T),T与Q相连的边记为B 算法构造过程: 1、初始化:首先将一个点(随意一个)加入最小生成树中 2、在所有Q中找到一条权值最小的边B以及对应的点,加入最小生成树 3、重复以上过程,直到T=A。

2015-09-16 19:10:32

阅读数 591

评论数 0

WarShall算法--图的传递闭包(进一步演变成flayd算法)

package graph;import java.util.ArrayList;import java.util.List;public class WarshallTest { public static void main(String[] args) { Warshall w = new...

2015-09-15 13:46:42

阅读数 436

评论数 0

拓扑排序

思路: 分别找到没有后继节点的节点,加入数组,删掉,重复动作。package tree;import java.util.ArrayList;import java.util.List;public class TopoTest { public static void main(String[]...

2015-09-15 13:46:39

阅读数 288

评论数 0

无向图--邻接矩阵、连接矩阵、深度遍历、广度遍历、生成树

1、开始生成的无向图 2、由图深度优先遍历生成的树  package graph;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;impor...

2015-09-15 13:46:37

阅读数 1353

评论数 0

哈夫曼树--顺序结构(建立、编码、解码)

引子: 这里的哈夫曼树的建立方法和上一篇不一样,是把数据放在数组上面的,而不是链表上面。因此,采用这种方法建立的哈夫曼树对节点的操作上比链式的哈夫曼树简单很多。对于空间问题,如果有m个item,那么需要建立2*m长度的数组,具体解释请看下面注释!package tree;import java.u...

2015-09-15 13:46:34

阅读数 890

评论数 0

哈夫曼树--链式结构(建立huffman树、编码、解码)

引子: 用链式结构来建立哈夫曼树。总体思路是: 将每一棵树(这是每一棵树只有一个节点,头节点)放在一个优先队列中(下面的是链表实现的优先队列),频率(rate)小的在队列头,取出队列头两个,频率相加之后组合成一个有三个节点的树,重新放入优先队列中。重复上面的过程,直到最后只剩下一个,则这最后一个便...

2015-09-15 13:46:31

阅读数 1537

评论数 0

用java实现优先级别队列

1、注意:因优先级别最高的元素被删除后,其后边的数都会往前移动,所以不会出现“假溢出”。所以不用设计成循环队列2、包和类的结构截图:3package com.test3;public class Element { private Object elem;//原先意义下的数据元素 private ...

2015-09-15 13:45:02

阅读数 594

评论数 0

用Java实现单向链表

【说明】封装节点类,既用于存储数据data和下一个节点的首地址next,又封装了基本的增删改查的功能。方便以后调用,而不用要用户手工去处理各个节点的关系。//class Link{ private Node root;//the head node public void addNode(St...

2015-09-15 13:45:00

阅读数 406

评论数 0

计算文本文件中各个词(中英文)出现的频率

要求:  写一个程序,分析一个文本文件中各个词出现的频率,并且把频率最高的10个词打印出来。文本文件大小约几百k均可。 解决步骤:  1、读取一个 txt 文本文件;  2、统计文件里面每个词出现的次数;  3、进行排序,打印出频率最高的10个词。 编程语言:java;测试文本:D:\\wordt...

2015-09-15 13:44:57

阅读数 592

评论数 0

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