当前位置: 代码迷 >> 综合 >> 终端实现《算法》(第四版)BinarySearch.java程序详细步骤
  详细解决方案

终端实现《算法》(第四版)BinarySearch.java程序详细步骤

热度:68   发布时间:2023-12-26 19:22:34.0

blog实现了命令行终端布置《算法》(第四版)运行学习环境:

首先确保自己PC的java运行环境正常!

一、到官网下载algs4.jar(本书的标准库)和algs4-data.zip(本书的数据支持文件);

官网下载网址:https://algs4.cs.princeton.edu/code/,找到上面的2个文件,下载到本地。

二、解压algs4-data.zip到自己的文件夹备用;解压algs4.jar,将里面的edu文件(即标准库包edu.princeton.cs.algs4.*)夹留着备用;

三、制作项目工程文件:

1??新建立一个文件夹来存放BinarySearch.java,输入代码并保存(注意:书中代码老了,更新后的最新正确代码已附在文章末尾)

2??将解压后的algs4.jar里面的edu文件夹,复制粘贴到该.java文件的目录下

3??在刚才解压algs4-data.zip生成的文件夹里面找到TinyW.txt和TinyT.txt,复制到该.java文件夹下

项目目录入下所示:

四、打开终端(命令行工具),cd定位到该.java的目录,执行命令:

javac BinarySearch.java
java BinarySearch TinyW.txt < TinyT.txt

即可运行出结果。

附录:BinarySearch.java

import java.util.Arrays;import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;public class BinarySearch{private BinarySearch() { }public static int indexof(int[] a, int key){//数组必须是有序的int lo = 0;int hi = a.length - 1;while(lo <= hi){int mid = lo + (hi - lo) / 2;if(key < a[mid])hi = mid - 1;else if(key > a[mid])lo = mid + 1;elsereturn mid;  //mid是数组中的坐标}return -1;}public static int rank(int key, int[] a){return indexof(a, key);}public static void main(String[] args){In in = new In(args[0]);int[] allowlist = in.readAllInts();Arrays.sort(allowlist);while(!StdIn.isEmpty()){//读取数字,如果不存在白名单上将其打印int key = StdIn.readInt();if(BinarySearch.indexof(allowlist, key) == -1)StdOut.println(key);}}
}

 

  相关解决方案