编译运行《算法》(第4版)中的标准库文件以及利用其实现其他算法

基于命令行与IDEA实现

前提条件:

  1. 已下载合适的JDK版本并正确配置了运行环境
  2. Windows PowerShell或cmd能正常运行
  3. IntelliJ IDEA能正常运行
  4. 已下载并解压了algs4.jaralgs4-data.zip,假设你将它们全都解压到了F盘的根目录下

文件位置

类型一:将edu文件夹作为IDEA项目打开,则java文件和class文件的存储路径均为F:\edu\princeton\cs\algs4
类型二:文件—新建—项目—选择左侧”新建项目“,然后填写相关信息,接着复制或移动java文件和class文件到指定文件夹,你也可以只移动java文件,然后选择构建项目即可。假设经过设置后标准库的java文件和class文件的存储路径分别为

F:\Algorithm\src\edu\princeton\cs\algs4
F:\Algorithm\out\production\Algorithm\edu\princeton\cs\algs4

项目结构
类型三:删除所有java文件中的package edu.princeton.cs.algs4语句 将修改后的java文件放入指定的目录下,假设你放到了CMD的默认启动路径,本人的是C:\Users\HP>
cmd

演示环境:

系统:Windows 10 专业版 22H2
软件:IntelliJ IDEA 2022.2.3 (Ultimate Edition)、CMD.exe

一、编译运行标准库中的RandomSeq.java:

方法一、用CMD命令

(一)操作步骤
1.打开cmd或IDEA的终端,跳转到edu的上一级目录
2.编译
3.运行
(二)具体命令
类型一:

F:
javac edu\princeton\cs\algs4\RandomSeq.java
java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0

类型二:

cd F:\Algorithm\src
javac edu\princeton\cs\algs4\RandomSeq.java
cd F:\Algorithm\out\production\Algorithm
java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0

类型三:

javac RandomSeq.java
java RandomSeq 5 100.0 200.0

(三)注意事项
1.在类型一和类型二中,必须让cmd从edu的上一级目录加载edu.princeton.cs.algs4.RandomSeq类,否则程序将无法正确执行。例如,假设cmd跳转到了class文件的存储目录中,那么
java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0java RandomSeq 5 100.0 200.0都将无法找到或加载主类。

方法二:用IDEA

1.若无class文件或class文件路径错误,则先构建项目
2.运行—编辑配置或从右上角进入:“程序实参”相当于命令行参数,“重定向输入自”相当于重定向输入,“将控制台输出保存到文件”相当于重定向输出
注意:若找不到这三个选项,则点击“修改选项(M)”,然后勾选上述三个选项
编辑配置
右上角
配置

二、编译运行BinarySearch.java

说明:仅介绍IDEA的操作方法,CMD、IDEA终端或Eclipse太麻烦,感兴趣的可以自己尝试实现。
1.在src下创建软件包,例如Searching
无
2.编写BinarySearch.java

package Searching;

import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

import java.util.Arrays;

public class BinarySearch {

    public static int rank(int key, int[] a) {
        int lo = 0, hi = a.length - 1;
        while (lo <= hi) {
            // Key is in a[lo..hi] or not present.
            int mid = lo + (hi - lo) / 2;
            if      (key < a[mid]) hi = mid - 1;
            else if (key > a[mid]) lo = mid + 1;
            else return mid;
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] whitelist = In.readInts(args[0]);
        Arrays.sort(whitelist);
        while (!StdIn.isEmpty()) {
            int key = StdIn.readInt();
            if (rank(key, whitelist) < 0)
                StdOut.println(key);
        }
    }
}

3.运行—编辑配置
工作目录:F:\Algorithm\src
程序参数:algs4-data\tinyT.txt
重定向输出(将控制台输出保存到文件):algs4-data\tinyW.txt
配置
4.运行程序,Ctrl+D结束输入。程序可能的结果如图所示
运行结果

插件推荐

1.The Chinese (Simplified) Language Pack / 中文语言包

如果你也喜欢中文界面,那就去文件—设置—插件—Marketplace中下载它吧。Jetbrains官方出品,完善程度较高。

2.Translation

1)默认翻译引擎为Google翻译,语言朗读功能(TTS)也是基于Google翻译的,但由于2022年10月1日谷歌停止了对中国大陆地区提供翻译服务,上述两项功能或服务均无法正常使用,开发者正在着手解决。如果你仍然想要使用这两项功能或服务,请查阅插件公告
2)有道翻译:需要配置。文件—设置—工具—翻译—选择“有道翻译”—配置,若无应用程序ID和密钥,则需前往有道智云申请。首次注册用户可以领取50体验金,添加客服微信并发送账号可额外获得50体验金,体验金用完之后就需要付费使用了,具体价格详见有道智云AI开放平台—价格中心
有道翻译配置
3)百度翻译:需要配置,操作步骤见同2)。标准版通用翻译引擎个人免费额度为一百万字符/月。
4)阿里翻译:需要配置,操作步骤见同2),比前两个稍微复杂一点。标准版通用翻译引擎和专业版翻译引擎(主要针对电商领域)的个人免费额度为一百万字符/月,插件默认调用的是标准版。
如何选择? 就文档翻译、文本翻译和语音合成等功能来说,标准版通用翻译引擎每个月的免费额度绰绰有余,个人更倾向百度和阿里。翻译准确度方面,由于没有大规模实测,所以不敢妄下定论,只举一个例子以供参考:

/**
  * Returns a random integer uniformly in [0, n).
  *
  * @param n number of possible integers
  * @return a random integer uniformly between 0 (inclusive) and {@code n} (exclusive)
  * @throws IllegalArgumentException if {@code n <= 0}
  * @deprecated Replaced by {@link #uniformInt(int n)}.
*/
   @Deprecated
  public static int uniform(int n) {
      return uniformInt(n);
  }
/**Returns a random integer uniformly in [0, n).
 *Google翻译:在[0, n)中均匀地返回一个随机整数。
 *有道翻译:返回统一在[0, n)中的随机整数。
 *百度翻译:返回[0, n)中一致的随机整数。
 *阿里翻译:在 [0, n) 中一致地返回一个随机整数
*/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岛中客、眼中你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值