
算法(第四版)
读算法(第四版)上机敲的一些代码。
水平有限,欢迎大家指教。
-dzy-
国子先生晨入太学,招诸生立馆下,诲之曰:“业精于勤,荒于嬉;行成于思,毁于随。”
展开
-
典型的数组处理代码(algs4)
1. 找出数组中最大的元素 package array1;/** 找出数组中最大的元素-数据类型的实现*/public class Max{ private double max; private double[] b; public Max(double[] a) //构造函数,数组是引用传递而非值传递所以进行复制性保护 { b=new double[a.len原创 2017-08-03 23:10:34 · 477 阅读 · 0 评论 -
典型静态方法的实现(algs4)
内容包括:计算一个整数的绝对值计算一个浮点数的绝对值判读一个数是否是素数计算平方根(牛顿迭代法) 配图计算直角三角形的斜边计算调和级数1+1/2+1/3+1/4+...+1/n=?package method;/* 典型的静态方法的实现 静态方法:若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。 静态方法为类所原创 2017-08-04 20:04:59 · 501 阅读 · 0 评论 -
典型的字符串处理代码(algs4)
Java的字符串AP(部分)Public class String String() 创建一个空字符串 Int l...原创 2017-08-05 23:25:08 · 396 阅读 · 0 评论 -
封装日期数据类型的两种实现(algs4)
Date1APIpublic class Date1private final int month;private final int day;private final int year;public Date1(int m,i原创 2017-08-07 11:15:32 · 428 阅读 · 0 评论 -
重写toString()和equals()方法(algs4)
APIpublic class Date2private final int value; public Date2(int m,int d,int y) 构造函数对参数进行移位存储,初试化变量原创 2017-08-07 18:55:22 · 454 阅读 · 0 评论 -
回环变位(algs4)
package circular;import java.util.Scanner;/* * 如果字符串s中的字符循环移动任意位置之后能够得到另一字符串t,那么s就被称为t的回环变位。 * 例如,ACTGACG 就是 TGACGAC 的一个回环变位,反之亦然。 * 判定这个条件在基因组序列中的研究是十分重要的。 * 编写一个算法检查两个给定的字符串s和t是否互为回环变位。*/p原创 2017-08-08 15:42:29 · 374 阅读 · 0 评论 -
Dijkstra的双栈算术表达式(未省略括号)求值算法(algs4)
package method;import java.util.Scanner;import java.util.Stack;/* * Dijkstra的双栈算术表达式(未省略括号)求值算法 * 用两个栈(一个用于保存运算符,一个用于保存操作数) * 1.将操作数压入操作数栈; * 2.将运算符压入运算符栈; * 3.忽略左括号; * 4.在遇到右括号时,弹出一个运算符,弹原创 2017-08-09 08:39:53 · 469 阅读 · 0 评论 -
累加器的方差(algs4)
相应的递推公式:其中En-1由平均值的递推公式变换替代可得代码中的表达式ypackage method;/*累加器的方差(与直接对所有数据的平方求和的方法相比较,能更好的避免四舍五入产生的误差)*/public class Accumulator{ private double m; private double s; privat原创 2017-08-09 14:21:57 · 784 阅读 · 0 评论 -
算法1.1 下压(LIFO)栈(能动态调整数组大小的实现)
package linearStructure;import java.util.Iterator;/*算法1.1 下压(LIFO)栈(能动态调整数组大小的实现) * 泛型可迭代,能动态调整数组大小的实现 * 要使类迭代:1.继承Iterable接口;2.添加一个方法iterator()并返回一个迭代器Iterator*/public class ResizingArryStack原创 2017-08-11 11:20:12 · 707 阅读 · 0 评论 -
算法1.2下压堆栈(链表表示)(algs4)
算法1.2下压堆栈(链表表示)APIpublic class Stack implements Iterableprivate Node first 栈顶(最近添加的元素)private int N 元素数量 public cl原创 2017-08-14 16:56:47 · 316 阅读 · 0 评论 -
算法1.3 先进先出队列(algs4)
算法1.3先进先出队列APIpublic class Queue implements Iterableprivate Node first 指向最早添加的节点的链接private Node last 指向最近添加的节点的链接private int Nprivate原创 2017-08-15 16:25:37 · 484 阅读 · 0 评论 -
算法1.4背包(algs4)
算法1.4背包APIpublic class Bag implements Iterable private Node first 链表的首节点private int N private class Node原创 2017-08-15 16:40:32 · 406 阅读 · 0 评论 -
打印N的二进制表示(algs4)
栈的应用除二取余,逆序排列package _1_3linkedList;import java.util.Scanner;/*打印N的二进制表示*/public class BinaryRepresentation{ public static void main (String[] args) { Stack stack=new Stack(); Scanne原创 2017-08-15 23:17:21 · 268 阅读 · 0 评论 -
算术表达式补全右括号(algs4)
栈的应用package _1_3linkedList;import java.util.Scanner;/*1.3.9从标准输入中得到一个缺少左括号的表达式并打印出补全括号之后的中序表达式*/public class _1_3_9CompleteBracket{ public static void main(String[] args) { String s=new原创 2017-08-16 10:44:30 · 596 阅读 · 0 评论 -
1.3.10将算术表达式由中序表达式转为后序表达式(algs4)
前序表达式如何求值对于一个前序表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个“数字串”作相应的运算,以此作为一个新的“数字串”并记录下来。一直扫描到表达式的最左端时,最后运算的值也就是表达式的值。例如,前序表达式“- 1 + 2 3“的求值,扫描到3时,记录下这个数字串,扫描到2时原创 2017-08-17 21:00:59 · 859 阅读 · 0 评论 -
算法分析(algs4)
时间:算法增长数量级的分类 典型的增长数量级函数 内存:变量的类型的内存原创 2017-08-18 10:38:18 · 1381 阅读 · 0 评论 -
3-sum问题平方对数级别解法(algs4)
ThreeSum程序会统计一个文件中所有和为0的三整数元组的数量。ThreeSun用一个三重循环进行查找for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) for(int k=j+1;k<n;k++) if(a[i]+a[j]+a[k])==0) cnt++;运行时间是关于数组大小的立方级别的改进后的算法思路:1.先将原创 2017-08-18 15:46:31 · 519 阅读 · 0 评论 -
Union-find算法(algs4)
1. 动态连通性问题目标:编写一个程序过滤掉序列中无意义的整数对(两个整数均来自同一个等价类中)。问题描述:当程序从输入中读取了整数对p、q时,如果已知的所有整数对都不能说明p和q是相连的,那么则将这一对整数写入到输出中。如果已知的数据可以说明p和q是相连的,那么程序应该忽略p、q这对整数并继续处理输入中的下一对整数。应用:网络、变量名等价性、数学集合网络方面的术语:对象称为原创 2017-08-19 21:32:09 · 547 阅读 · 0 评论 -
初级排序算法(algs4)
1.规则 排序类算法模板APIpublic class Example public static void sort(Comparable[] a) (*原创 2017-08-21 11:22:26 · 613 阅读 · 0 评论 -
归并排序(algs4)
将两个有序的数组归并成一个更大的有序数组。要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果归并起来。归并排序是算法中分治思想的典型应用归并排序所需的时间和NlgN成正比。辅助数组所需的额外空间和N的大小成正比。归并排序是一种渐进最优的基于比较排序的算法。 1. 原地归并将涉及的所有元素复制到一个辅助数组,再把归并的结果放回原数组。 private原创 2017-08-21 21:22:03 · 526 阅读 · 0 评论 -
快速排序(algs4)
package _2_Sorting;import java.util.Scanner;import edu.princeton.cs.algs4.StdRandom;/**算法2.5 快速排序 * 应用最广泛的排序算法 * 优点: * 1.原地排序(只需要一个很小的栈) * 2.将长度为N的数组排序所需的时间和NlgN成正比 * 缺点: * 非常脆弱 * */publi原创 2017-08-24 10:48:50 · 432 阅读 · 0 评论 -
优先队列(algs4)
泛型优先队列的API public class MaxPQ> private Key[] pq 基于堆的完全二叉树 private int N原创 2017-08-24 15:21:01 · 351 阅读 · 0 评论 -
算法2.7堆排序(algs)
堆排序算法APIpublic class Heapsort public static void sort(Comparable[] a) 堆的构造、下沉排序,销毁堆 private static void sink(Comparable[] a原创 2017-08-24 18:58:47 · 425 阅读 · 0 评论 -
算法3.1 顺序查找(基于无序链表)(algs4)
符号表是一种存储键值对的数据结构,支持两种操作:插入(put),即将一组新的键值对存入表中;查找(get),即根据给定的键得到相应的值。 算法3.1 顺序查找(基于无序链表)APIpublic class Se原创 2017-08-26 19:54:49 · 1468 阅读 · 0 评论 -
算法3.2 二分查找(基于有序数组)(algs4)
有序泛型符号表的APIpublic class BinarySearchST,Value>private Key[] keys 存储键private Value[] vals 存储值private int N原创 2017-08-27 11:10:42 · 690 阅读 · 0 评论