算法与数据结构
文章平均质量分 72
为道为僧_何必区分
无无
展开
-
图的深度搜索和回溯
题:输入如下所示 每一个“ . ” 都是可以通行的,而每一个“ # ”表示不能通行,现在要从左下角走遍所有位置,走到右下角。请问有多少种走法输入: 有多组数据 以0 0表示结束. 第一行表示有n行,m列。接下来n行,m列输入图的案例2 2....2 3#.....3 4............0 0输出:一行表示走法数114java编程实现impor原创 2017-05-15 10:22:21 · 358 阅读 · 0 评论 -
查找一个字符串中最大回文子串
给定一个字符串,查找该字符串中的最大回文子串。如: "a" 最大回文子串为 "a" 大小为1 "aa" 最大回文子串为"aa" 大小为2 "aaa" 最大回文子串为"aaa" 大小为3 "aba" 最大回文子串为"aba" 大小为3 "character" 最大回文子串为"carac" 大小为5该问题是一个...原创 2019-04-23 10:37:08 · 1927 阅读 · 0 评论 -
红黑树java实现ADT
一、封装ADT 此类为参考算法导论用java编写。package tree;import java.util.concurrent.LinkedBlockingQueue;/** * 红黑树ADT(Abstract Data Struct) * 本类纯属虚构,如有雷同纯属巧合。本类为个人学习研究编写,如有问题可指正。 * * * 红黑树是avl树的一种,一般a...原创 2019-04-16 00:37:19 · 293 阅读 · 0 评论 -
用java实现各种排序算法
package Com.Sort;/** * 各种高级排序方法的实现 * * @author Jane */ public class AdvanceSort {// 打印数组public static <T extends Comparable<? super T>> void print(T[] a) { for (T t : a) { System原创 2017-08-10 18:07:44 · 369 阅读 · 0 评论 -
java程序计算两个大整数相乘
方法1 :用两个字符串保存输入的大整数,然后用第二个字符串的每一位去乘第一个字符串的数字值,最后将每次的结果错位相加即可。时间复杂度高O(n^2)方法2:将两个大整数X,Y每次分割成两半,第一个分割成AB,第二个分割成CD。所以最后结果XY=(A*10^n/2 +B)(C*10^m/2+D);进行分解可得XY=AC*10^(n+m)/2+AD*10^n/2 +BC*10^m/2 +BD;原创 2017-08-02 14:27:32 · 6837 阅读 · 0 评论 -
用java构建一个优先队列
package Com.Tree;public class BinaryHeap> { //定义初始化大小 private int currentSize; private final static int DEFAULT_CAPACITY=100; private AnyType[] array; public BinaryHeap() { this(DEFAULT_CAP原创 2017-08-09 12:22:21 · 653 阅读 · 0 评论 -
用java实现一颗平衡二叉树ADT
平衡二叉树是一颗能够确保能在O(lgn)渐进时间界进行查找的树。我编写一个类来对平衡二叉树进行操作,包括,添加元素,删除元素,查找元素等操作。我建议:对于数据结构,如果都能够自己编写一遍,不仅能够摸清其中的奥妙,而且可以快速入手其他结构。简单实现代码如下:可以直接复制使用,或者转为自己的jar文件package Com.Tree;import java.util.Comparator;原创 2017-08-08 17:26:30 · 518 阅读 · 0 评论 -
判断单链表有环的三种方法
判断链表是否有环的三种方法 1. 在节点ListNode中增加一个域,用于记录此节点是否已经被访问,如下ListNode中被注释掉代码。此方法简单,能找出环开始的节点,但是增加了链表的开销。如果链表非常大 则需要十分大的内存来保存此域。2. 使用链表逆序的方法。从头结点开始一直将链表逆序,头结点的next域为空。如果有环的话链表逆序必定会回到头节点而终止。这种做法同样简单,确保O(n)时间...原创 2017-07-18 11:24:37 · 3290 阅读 · 0 评论 -
寻找平面内共线点数最多的直线和点数
import java.awt.Point;import java.util.HashSet;import java.util.Set;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in);原创 2017-07-18 12:05:11 · 638 阅读 · 0 评论 -
B树原理及java实现
本代码为参考算法导论所写,主要记录B树数据结构的实现原理及方式。本代码主要实现了B树的插入和删除的操作过程。详细注释了插入分裂,删除合并的逻辑规则。本代码未讲过仔细的调试和详尽的测试,但可以作为学习和研究B树结构原理,实现方式的参考。package tree;/** * B树特征 * 每个节点必须包含 t-1 -> 2t-1个key,t>=2。根节点可以只有1个...原创 2019-05-02 13:49:32 · 474 阅读 · 0 评论