算法第四版(Sedgewick著)笔记
垃圾继承拖拉机
押井守的巴吉度犬被我偷走辣
展开
-
第四章--无向图深度优先搜索算法
public class DepthFirstPaths { private boolean marked[];// 用于存放被标记过的顶点 private int edgeTo[];// 数组内的元素表示某顶点,其索引表示某顶点的相邻顶点。 private final int s;// 起点 private int count;// 已遍历顶点的数量 public DepthFirstPaths(Graph G, int s) { marked .原创 2020-07-29 21:36:20 · 167 阅读 · 0 评论 -
第四章--无向图广度优先搜索算法
public class BreadthFirstPaths { private boolean[] marked;// 保存被标记的顶点 private int[] edgeTo;// 保存起点到与之连通的顶点之间的最短路径 private final int s;// 起点 public BreadthFirstPaths(Graph G, int s) { marked = new boolean[G.V()]; edgeTo = n.原创 2020-07-29 21:33:09 · 233 阅读 · 0 评论 -
第四章--邻接表数组表示无向图
无向图中的顶点用数组的索引表示,该索引中的元素用bag表示,而这些元素指的是索引对应的顶点所连接的顶点。public class Graph { private final int V;// 顶点个数 private int E;// 边的数目 private Bag<Integer> adj[];// 邻接表//初始化邻接表 public Graph(int v) { this.V = v; this.E = 0;原创 2020-07-29 21:31:05 · 417 阅读 · 0 评论 -
第三章--线性探测法散列表
public class LinearProbingHashST<Key,Value>{ /** * 利用两个数组来存储key和value,当发生冲突时,不需要链表来解决,而是往后面的索引中寻找空的位置。 */ //键值对数量 private int N; //散列表长度 private int M=16; private Key[] keys; private Value[] valuse; public.原创 2020-07-29 21:27:00 · 909 阅读 · 0 评论 -
第三章--拉链法散列表
public class SeparateChainingHashST<Key, Value> { /** * 这是拉链法散列表,同时利用了第三章最开始使用的链表实现的符号表。 * 使用数组的索引来表示符号表的key,为了解决key过大而导致的数组过大问题,利用hash方法对key进行处理,而处理后的key有可能会出现索引相同的现象,为了解决冲突,数组的值用链表来表示。 */ private int n; .原创 2020-07-29 21:25:04 · 467 阅读 · 0 评论 -
第三章--2-3查找树及其红黑树实现
算法 一书中,先介绍2-3查找树,随后利用红黑树对其进行实现(红链接连接两个2-节点形成3-节点,而黑链接则是2-3查找树中的普通链接),类中主要定义了三种方法,左旋,右旋和变色(何时左旋,右旋或者变色书中介绍的很详细),利用put方法实现递归,不断地将元素注入到红黑树中(我对put方法中的递归的理解为:可将put方法看做有很多个put方法,当前的put方法在调用另一个put方法,另一个put方法又在调用下一个一模一样的put方法,最后一个被调用的put方法在判断h为null时(相关代码为:.原创 2020-07-29 21:00:48 · 114 阅读 · 2 评论 -
第三章--基于二叉查找树的符号表
/** * 基于二叉查找树的符号表。 * @param <Key> * @param <Value> */public class BTS <Key extends Comparable<Key>,Value> { private Node root; private class Node { private Key key; private Value value; private .原创 2020-07-29 21:27:59 · 127 阅读 · 0 评论 -
第三章--基于数组的符号表
public class BinarySearchST<Key extends Comparable<Key>,Value> { /** * 利用两数组来存key和value,其中,key数组是有序的,rank方法可查出某个的key对应的value */ private Key[]keys; private Value[]values; private int N; public BinarySearchST(int ca.原创 2020-07-26 22:56:05 · 251 阅读 · 0 评论 -
第三章--基于链表的符号表
public class ST <Key,Value> { /** * 利用链表来存储符号表。这里的Node采用头插法创建,我在原有基础上创建了一个print方法。 */ Node first; public class Node { Key key; Value val; Node next; public Node(Key key, Value val, Node next) {.原创 2020-07-26 22:55:04 · 170 阅读 · 0 评论 -
第二章--优先队列
public class Test04 { /** * 堆是一种数据结构,一般采用完全二叉树的形式实现(堆一定是完全二叉树,完全二叉树不一定是堆, * 注意区分完全二叉树和排序二叉树),队列是线性表的一种,线性表属于线性结构, 树是树形结构。堆是一种线性表。 *优先队列通常用堆来实现,而堆有两个性质,一,子节点总是不大于或者不小于父节点,二,堆总是一棵完全二叉树。 * @param v1 * @param w1 * @return .原创 2020-07-26 22:47:57 · 85 阅读 · 0 评论 -
第二章--快速排序
public class Example { public static boolean less(Comparable v1,Comparable w1){ int v=Integer.parseInt((String)v1); int w=Integer.parseInt((String)w1); if (v<w) return true; else return false;} protected static .原创 2020-07-26 22:40:12 · 65 阅读 · 0 评论 -
第二章--归并排序
public class Example { public static boolean less(Comparable v1,Comparable w1){ int v=Integer.parseInt((String)v1); int w=Integer.parseInt((String)w1); if (v<w) return true; else return false;} protected static .原创 2020-07-26 22:36:52 · 110 阅读 · 0 评论 -
第二章--希尔排序
public class Example { public static boolean less(Comparable v1,Comparable w1){ int v=Integer.parseInt((String)v1); int w=Integer.parseInt((String)w1); if (v<w) return true; else return false;} protected static .原创 2020-07-26 22:34:22 · 89 阅读 · 0 评论 -
第二章--插入排序
public class Example { public static boolean less(Comparable v1,Comparable w1){ int v=Integer.parseInt((String)v1); int w=Integer.parseInt((String)w1); if (v<w) return true; else return false;} protected static v.原创 2020-07-26 22:31:42 · 64 阅读 · 0 评论 -
第二章--选择排序
public class Example { public static boolean less(Comparable v1,Comparable w1){ int v=Integer.parseInt((String)v1); int w=Integer.parseInt((String)w1); if (v<w) return true; else return false;} protected stati.原创 2020-07-26 22:24:07 · 100 阅读 · 0 评论