最近在学习算法(第四版),书中一直在使用命令行来执行Java程序,而使用Eclipse时,很难使用命令行,或者说我根本就不会用,于是就想研究一下使用VS Code来编写代码,使用命令行来执行程序。看了一下官网,就知道了安装Java Extension Pack。 打开VS Code, 在插件中搜索Java, 点击install, 等待安装完成。现在就要用最原始的方式来编写Java 程序了。创建一个空文件夹,然后用VS Code打开该文件夹,创建一个Evaluate.java文件,...
写在前面整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp这一节内容可能会用到的库文件有 Measurement 和 TestCase,同样在 Github 上可以找到。善用 Ctrl + F 查找题目。习题&题解1.5.1题目使用 quick-find 算法处理序列 9-0 3-4 5-8 7-2 2-1 5-7 0-3 4-2 。对于输入的每一对整数,给出 id[] 数组的内容和访问数组的次数。解答quick-find 的官方实现:QuickFindUF.java。只要实现相...
下压(LIFO)栈:能够动态调整数组大小的实现import java.util.Iterator;public class ResizingArrayStack<Item> implements Iterable<Item>
{private int N = 0;private Item[] a = (Item[]) new Object[1];public boolean isEmpty(){return N == 0;}public int size(){return N;}public void resize(int max){Item[] temp = (Item[]) new Object[max];for(int i = 0 ; i < N ; i++){temp[i] = a[i];}a = temp;}public Item pop(){I...
设a[],b[]都是长为数百万的数组int[] t = a;
a=b;
b = t;这段代码会将他们交换。它的效率不可能再高了,
因为它交换的是引用,而不是数百万个元素。 例子如下:import edu.princeton.cs.algs4.StdOut;publicclass No_1_2_8 {publicstaticvoid main(String[] args) {// TODO Auto-generated method stubint n =10;int[] a = newint[n];for(int i=0;i<n;i++)a[i]=i;int[] b = newint [100];for(int i=0;i<n;i++)b[i] = 100*i;StdOut.p...
import java.util.Arrays;import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;/*** The {@code BinarySearch} class provides a static method for binary* searching for an integer in a sorted array of integers.* <p>* The <em>indexOf</em> operations takes logarithmic time in the worst case.* <p>* For additional documentation, see <a href="http...
下压堆栈(链表实现):import java.util.Iterator;public class LinkedStack<Item> implements Iterable<Item>
{public class Node{Item item;Node next;}private Node frist;private int N = 0;public boolean isEmpty(){return N == 0;}public int size(){return N;}public void push(Item item){Node oldFrist = frist;frist = new Node();frist.next = oldFrist;frist.item = item;N++;}public Item pop(){Item item = frist.it...
写在前面整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp这一节内容可能会用到的库文件有 Measurement 和 TestCase,同样在 Github 上可以找到。善用 Ctrl + F 查找题目。习题&题解1.4.1题目证明从 N 个数中取三个整数的不同组合总数为 N(N - 1)(N - 2) / 6。解答即为证明组合计算公式:C(N, 3)= N! / [(N - 3)! × 3!]= [(N - 2) * (N - 1) * N] / 3!= N(N - 1)(N - 2) / 6显然 N 必...
关于-Algorithms, 4th Edition (算法-第四版)源代码在本地机器的运行配置。
其实关于这个教程的使用已经在 Java Algorithms and Clients 页面中写出,并且跨三大平台包括Windows,Linux,Mac OS X。
但对于许多有英文阅读障碍的同学来说,这是一个很棘手的麻烦。(Java Algorithms and Clients 文中列出的配置步骤,如图并且即使按照页面中所给的步骤在相应的平台配置部署之后也会遇到很多问题,所以在这里我列出在Windows上详细...
课程主要教程:算法第四版
网络资料:https://algs4.cs.princeton.edu/home/
第一天:
两个经典算法:快速查找和快速合并
快速查找:
可以由代码实现看出我们查看两个数是否连通,只需要判断数组的值是否相等,所需要的时间很少
但要是合并数组则需要高昂的代价,如果有N个对象就要进行N个对象进行合并,很繁琐。
快速合并:
快速合并算法主要采用树的结构,针对对象的合并,只需要改变对象的父节点指向,合并操作比快速查...
《算法(第四版)》练习答案,自己做的,记录一下~ 如有错误,烦请不吝赐教!1-1-1.
a.7 b.200.0000002,没溢出,正常算就可以 c.true,因为&&的优先级高于||
1-1-2.
a.1.618,类型自动转换了,整型转换为浮点型 b.10.0,类型自动转换了,整型转换为浮点型 c.true,类型自动转换了,整型转换为浮点型,这里4.1>4.0也是true d.33,类型自动转换了,转换为字符串,但是1和2还是能计算的,如果要得到字符串123可以尝试1+""+2+“3”,或...
此博客连接:
字符串
字符串拼接
+
类型转换
整型转字符串int a=6;
String str=toString.value(a);字符串转整型String str="123"
int a=Integer.parseInt(str)在Java中,连接字符串的时候会自动讲任意数据类型的值转换为字符串,如果+后的第一个参数时字符串类型,那么Java会自动将其他参数都转换为字符串类型。
1.初级排序算法
1.1我们关注的主要对象为重拍数组元素的算法。,其中每个元素有个主键,将主键按照某种方式排列。在java中元素通常都是对象,对主键描述往往通过comparable接口。
一般排序模板public class Example{public static void sort(Comparable[] a){.......}private static boolean less(Comparable v,Comparable w){ return v.compareTo(w)<0;}private static void each(Comparable[] a,int i, int j){ Comparable t=a[i...
【转】:https://blog.csdn.net/artprog/article/details/52797472
博主用的是Eclipse。配置Java开发环境就省略了,下面主要说怎么在Eclipse中使用书本自带的库。
1.下载algs4.jar
点击下面的链接下载algs4.jarhttp://algs4.cs.princeton.edu/code/algs4.jar
2.配置环境
首先,将下载好的库放到自己喜欢的一个目录下,最好路径无空格无中文。然后在用户环境变量CLASSPATH中添加该库的路径,如果没有该变量请自行创建。例如我的如下...
import edu.princeton.cs.algs4.StdOut;public class E1_5_21 {public static void main(String[]args){for (int N=125;true;N+=N){int cnt=RandomConnection.count(N)/2;StdOut.printf("N=%13d count=%15d 1/2NlnN=%16.1f ratio=%5.1f\n",N,cnt,1.0/2*N*Math.log(N),1.0/2*N*Math.log(N)/cnt);}}
}
用到的类结合1.5.17
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;public class E1_5_17 {public static void main(String[]args){int N= StdIn.readInt();int cnt=RandomConnection.count(N);StdOut.printf("N=%8d count=%15d\n",N,cnt);}
}
import edu.princeton.cs.algs4.StdRandom;public class RandomConnection {public static int count(int N){//Union find.随机产生pair,直到所有点连在一起,返回产生的数的...