algs4|macOS《算法》idea环境配置及重定位

本文介绍了在macOS系统中,使用IntelliJ IDEA运行《算法》第四版代码的详细步骤,包括创建项目、导入数据、添加algs4.jar库,并提供了测试代码示例。通过编译和运行代码,可以在标准输入中读取数据并输出结果。
摘要由CSDN通过智能技术生成

如何在macOS使用idea运行算法第四版中的代码?

一、引

最近看在《算法》第四版,想测试一下书上的代码,但是书上的代码使用了自己的库,比如输入输出类,又想尝试一下10W个测试数据,折腾了一下。结果发现网上的教程要么无法复现要么系统不对要么软件不对。

系统:macOS 10.15.6 (19G73) idea jdk8

代码和数据在官网可以下载

二、使用

1.创建项目

正常创建

2.导入数据

algs4-data.zip解压放在src目录下(方便重定位指令,但是不美观,可以放在文件夹,指令自行改动)

algs4Data

3、导入algs4.jar

先将algs4.jar放入Java目录的EXtensions文件夹下:/Library/Java/Extensions/(位置不对无法编译)

idea中导入algs4.jar

文件–>项目结构( 快捷键com+; )

模块 --> 依赖 --> (添加) --> 选择/Library/Java/Extensions/下的algs4.jar

(我测试的时候只要Java目录中有algs4.jar,不管添加存放在哪里的algs4.jar都可以,晕)

algs401In

成功添加后,记得确定:

algs402In

algs403In

成功导入后可以看到algs4.jar
注意:直接导入别的目录的也可以看到,但是编译会《找不到》

打开可以复制的代码到src目录下使用,但是注意package路径,且要import这本书自己的库

import edu.princeton.cs.algs4.*;

我的测试代码:

import edu.princeton.cs.algs4.*;
import java.util.Arrays;

public class BinarySearch {
    public static int indexOf(int[] a, int key) {
        int lo = 0;
        int 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;
    }
    @Deprecated
    public static int rank(int key, int[] a) {
        return indexOf(a, key);
    }
    public static void main(String[] args) {

        // read the integers from a file
        In in = new In(args[0]);
        int[] allowlist = in.readAllInts();

        // sort the array
        Arrays.sort(allowlist);

        // read integer key from standard input; print if not in allowlist
        while (!StdIn.isEmpty()) {
            int key = StdIn.readInt();
            if (BinarySearch.indexOf(allowlist, key) == -1)
                StdOut.println(key);
        }
    }
}

4.编译运行

idea终端运行,因为要使用重定向

cd到src目录 —> 编译代码 —> 运行代码

javac   BinarySearch.java  
java   BinarySearch  largeW.txt < largeT.txt  

algs4Run

只要一直在输出数据就是运行成功了:

algs4Y

附录:

参考:如何在Intellij Idea下编译运行《算法》里的程序?

官网:算法第四版官网

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
S-MAC (Sensor-MAC)算法是一种无线传感器网络中的低功耗MAC协议,主要用于延长传感器节点的电池寿命。下面是使用Java实现S-MAC算法的一些基本步骤: 1. 定义节点的状态:定义节点的状态,包括睡眠、唤醒、侦听和发送等状态。 2. 定义节点的事件:定义节点的事件,包括定时器事件、接收事件和发送事件。 3. 定义节点的协议:根据节点的状态和事件,定义S-MAC协议。协议主要包括以下几个部分: a. 初始化:在节点启动时,进行初始化配置,包括设置节点的状态和定时器。 b. 睡眠模式:节点在大部分时间处于睡眠模式,以节省能量。在睡眠模式下,节点关闭无线电,并设置唤醒定时器。 c. 唤醒模式:节点在唤醒定时器到达时进入唤醒模式,并进行接收和发送操作。 d. 侦听模式:节点在接收到数据包时进入侦听模式,并等待一段时间,以便接收到更多的数据包。 e. 发送模式:节点在发送数据包时进入发送模式,并进行发送操作。发送完成后,节点返回睡眠模式。 4. 实现节点的状态转换:根据节点的状态和事件,实现节点的状态转换。 5. 实现节点的能量管理:在S-MAC协议中,能量管理是一个重要的问题。需要记录每个节点的能量状况,并在节点能量低于一定阈值时,采取相应措施,如降低节点的传输功率或关闭无线电等。 6. 实现节点的数据传输:在S-MAC协议中,数据传输是一个关键的操作。需要实现数据的封装、加密和解密等功能,以确保数据的安全性和准确性。 以上是使用Java实现S-MAC算法的一些基本步骤,具体实现方法可以根据实际需求进行调整和优化。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值