package OneChapter;
import java.util.Arrays;
import edu.princeton.cs.algs4.In;//算法4自带的工具包
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;
else return mid;
}
return -1;//找到整数排序数组中的整数之后返回 -1
}
public static int rank(int key,int [] a){
return indexOf(a,key);
}
//java 的 public static void main(String[] args)
//https://blog.youkuaiyun.com/younglao/article/details/78349545
public static void main(String[] args){
//In.class算法四algs4工具包 从标准输入,文件和URL读取各种类型的数据。
//https://introcs.cs.princeton.edu/java/stdlib/In.java.html
In in = new In(args[0]);
//edu.princeton.cs.algs4.In.class里边的函数
//edu.princeton.cs.algs4.In.readAllInts()
int [] whitelist = in.readAllInts();
//sort数组排序
//https://www.cnblogs.com/ysocean/p/8616122.html
Arrays.sort(whitelist);
//StdIn类提供从标准输入读取字符串和数字静态方法。
//https://introcs.cs.princeton.edu/java/stdlib/javadoc/StdIn.html#readInt()
while(!StdIn.isEmpty()){
//readInt标准输入读取下一个数据,将其解析为整数,并返回该整数。
int key = StdIn.readInt();
if(BinarySearch.indexOf(whitelist, key) == -1)
//将数字和文本写入标准输出
//https://introcs.cs.princeton.edu/java/stdlib/StdOut.java.html
StdOut.println(key);
}
}
}
https://blog.youkuaiyun.com/younglao/article/details/78349545