《算法》第五章部分程序 part 5】的更多相关文章

▶ 书中第五章部分程序,包括在加上自己补充的代码,字符串高位优先排序(美国国旗排序) ● 美国国旗排序 package package01; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.Stack; public class class01 { private static final int BITS_PER_BYTE = 8;…
▶ 书中第五章部分程序,包括在加上自己补充的代码,适用于基因序列的 2-Bit 压缩算法,行程长压缩算法,Huffman 压缩算法,LZW 压缩算法 ● 适用于基因序列的 2-Bit 压缩算法 package package01; import edu.princeton.cs.algs4.BinaryStdIn; import edu.princeton.cs.algs4.BinaryStdOut import edu.princeton.cs.algs4.Alphabet; public c…
▶ 书中第五章部分程序,包括在加上自己补充的代码,字符串的二进制表示.十六进制表示.图形表示 ● 二进制表示 package package01; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.BinaryStdIn; public class class01 { private class01() {} public static void main(String[] args) { int bitPer…
▶ 书中第五章部分程序,包括在加上自己补充的代码,非确定性有穷自动机(NFA),grep 命令(利用 NFA 匹配) ● 非确定性有穷自动机(NFA) package package01; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.Bag; import edu.princeton.cs.algs4.Stack; import edu.princeton.cs.algs4.Digraph; import…
▶ 书中第五章部分程序,包括在加上自己补充的代码,Knuth-Morris-Pratt 无回溯匹配,Boyer - Moore 无回溯匹配,Rabin - Karp 指纹匹配 ● Knuth-Morris-Pratt 无回溯匹配 package package01; import edu.princeton.cs.algs4.StdOut; public class class01 { private final int R; // 字符集基数 private int[][] dfa; // 回…
▶ 书中第五章部分程序,包括在加上自己补充的代码,Trie 树类,Trie 集合,三值搜索树(Ternary Search Trie) ● Trie 树类 package package01; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.Queue; public class class01<Value> { private st…
▶ 书中第五章部分程序,包括在加上自己补充的代码,字符串高位优先排序(计数 + 插排),(原地排序),(三路快排,与前面的三路归并排序相同) ● 计数 + 插排 package package01; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class class01 { private static final int BITS_PER_BYTE = 8; private…
▶ 书中第五章部分程序,包括在加上自己补充的代码,字母表类,字符串低位优先排序(桶排) ● 字母表类 package package01; import edu.princeton.cs.algs4.StdOut; public class class01 { public static final class01 BINARY = new class01("01"); public static final class01 OCTAL = new class01("0123…
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userg…
▶ 书中第一章部分程序,加上自己补充的代码,包括若干种二分搜索,寻找图上连通分量数的两种算法 ● 代码,二分搜索 package package01; import java.util.Arrays; import edu.princeton.cs.algs4.StdRandom; public class class01 { public int binarySearch(int [] a, int target) // 非递归实现 { int lp = 0, rp = a.length -…
▶ 书中第二章部分程序,加上自己补充的代码,包括利用优先队列进行多路归并和堆排序 ● 利用优先队列进行多路归并 package package01; import edu.princeton.cs.algs4.IndexMinPQ; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; public class class01 { private class01() {} private static vo…
▶ 书中第二章部分程序,加上自己补充的代码,包括优先队列和索引优先队列 ● 优先队列 package package01; import java.util.Comparator; import java.util.Iterator; import java.util.NoSuchElementException; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class cla…
▶ 书中第二章部分程序,加上自己补充的代码,包括各种优化的快排 package package01; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.StdRandom; public class class01 { private class01() {} public static void sort1(Comparable[] a) /…
▶ 书中第二章部分程序,加上自己补充的代码,包括若干种归并排序,以及利用归并排序计算数组逆序数 ● 归并排序 package package01; import java.util.Comparator; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class class01 { private class01() {} private static void merge(Co…
▶ 书中第二章部分程序,加上自己补充的代码,包括插入排序,选择排序,Shell 排序 ● 插入排序 package package01; import java.util.Comparator; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class class01 { private class01() { } public static void sort(Comparab…
▶ 书中第一章部分程序,加上自己补充的代码,包括简单的计时器,链表背包迭代器,表达式计算相关 ● 简单的计时器,分别记录墙上时间和 CPU 时间. package package01; import java.lang.management.ThreadMXBean; import java.lang.management.ManagementFactory; public class class01 { private final ThreadMXBean threadTimer; // CP…
一.数值类型 1.实数常量的表示:3.5(双精度),3.5f(单精度),3.5L(长双精度) 2.整数常量:char字符常量(‘a’,‘b’,‘0’)当做一个整型常量参加运算 3.数字字符与英文字母字符的编号(Ascll码)都是顺序连接的 二.控制语句 1.while和do while的区别:当while条件不成立时,while()循环不执行循环语句,而do while会循环执行一次循环语句再判断 2.流程控制语句:continue(中断本次循环)    break(跳出整个循环) 3.开关语句…
第五章 编写程序 伪码:伪码能帮你专注于逻辑而不需要顾虑到程序语法 测试码:测试用的程序代码 真实码:实际代码 伪码 伪码是介于真正的java程序与正常英语之间的一种语言.伪码大致包括3部分:实例变量的声明.方法的声明.和方法的逻辑.伪码最重要的部分是方法的逻辑. 测试码 测试代码写在编写方法之前.先编写测试用程序代码的概念来自于极限编程(XP). 极限编程(XP):一种新型的软件开发方法论.XP规则 关于for循环 基本for循环 for(int i = 0;i<100;i++){} 第一段:…
第五章面试题解答 5-31. DFS和BFS使用了哪些数据结构? 解析: 其实刚读完这一章,我一开始想到的是用邻接表来表示图,但其实用邻接矩阵也能实现啊?后来才发现应该回答,BFS用队列实现:DFS可以用栈实现也可以改写成递归形式.用栈来消除递归改写DFS也出现在<算法导论>的练习题22.3-6. 5-32. 写一个函数,在遍历二叉查找数的时候,输出第i个结点. 解析: 模仿DFS遍历时维护一个进入时间数组和完成时间数组的特点,维护一个全局变量n,在中序遍历的时候,每遍历一个结点就n++,直到…
▶ 书中第六章部分程序,加上自己补充的代码,包括全局最小切分 Stoer-Wagner 算法,最小权值二分图匹配 ● 全局最小切分 Stoer-Wagner 算法 package package01; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.EdgeWeightedGraph; import edu.princeton.cs.algs…
▶ 书中第六章部分程序,包括在加上自己补充的代码,包括二分图最大匹配(最小顶点覆盖)的交替路径算法和 HopcroftKarp 算法 ● 二分图最大匹配(最小顶点覆盖)的交替路径算法 package package01; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.BipartiteX; import edu.princeton.cs.algs4.Graph; import edu.princeton.c…
▶ 书中第六章部分程序,包括在加上自己补充的代码,网络最大流 Ford - Fulkerson 算法,以及用到的流量边类和剩余流量网络类 ● 网络最大流 Ford - Fulkerson 算法 package package01; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.FlowEdge; import edu.princeton.cs.algs4.FlowNetwork; import edu.pr…
▶ 书中第四章部分程序,包括在加上自己补充的代码,有边权有向图的邻接矩阵,FloydWarshall 算法可能含负环的有边权有向图任意两点之间的最短路径 ● 有边权有向图的邻接矩阵 package package01; import java.util.Iterator; import java.util.NoSuchElementException; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.StdR…
▶ 书中第四章部分程序,包括在加上自己补充的代码,在有权有向图中寻找环,Bellman - Ford 算法求最短路径,套汇算法 ● 在有权有向图中寻找环 package package01; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.StdRandom; import edu.princeton.cs.algs4.DirectedEdge; import edu.princeton.cs.algs4.E…
▶ 书中第四章部分程序,包括在加上自己补充的代码,Dijkstra 算法求有向 / 无向图最短路径,以及所有顶点对之间的最短路径 ● Dijkstra 算法求有向图最短路径 package package01; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.DirectedEdge; import edu.princeton.cs.algs…
▶ 书中第四章部分程序,包括在加上自己补充的代码,Kruskal 算法和 Boruvka 算法求最小生成树 ● Kruskal 算法求最小生成树 package package01; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.Edge; import edu.princeton.cs.algs4.EdgeWeightedGraph; i…
▶ 书中第四章部分程序,包括在加上自己补充的代码,两种 Prim 算法求最小生成树 ● 简单 Prim 算法求最小生成树 package package01; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.Edge; import edu.princeton.cs.algs4.EdgeWeightedGraph; import edu.pr…
▶ 书中第四章部分程序,包括在加上自己补充的代码,包括无向图连通分量,Kosaraju - Sharir 算法.Tarjan 算法.Gabow 算法计算有向图的强连通分量 ● 无向图连通分量 package package01; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.Graph; import edu.princeton.cs.al…
▶ 书中第四章部分程序,包括在加上自己补充的代码,两种拓扑排序的方法 ● 拓扑排序 1 package package01; import edu.princeton.cs.algs4.Digraph; import edu.princeton.cs.algs4.SymbolDigraph; import edu.princeton.cs.algs4.DirectedCycle; import edu.princeton.cs.algs4.DepthFirstOrder; import edu.…
▶ 书中前五章的几个小程序,基本的运算操作,使用了作者的库 Irvine32 和 Irvine64(一开始以为作者网站过期了,各网站上找到的文件大小都不一样,最后发现是要搭梯子 Orz,顺利下载).注意编译前将相关的库文件放到 “项目属性 → 链接器 → 输入 → 附加依赖项” 中. ● 代码,整数数组求和 . .model flat,stdcall .stack ExitProcess PROTO, dwExitCode: dword .data array DWORD 10000h, 200…