1.1.23为BinarySearch的测试用例添加一个参数:+打印出标准输入中不在白名单上的值;-,则打印出标准输入中在白名单上的值。
import java.util.Arrays;
public class Test
{
public static int rank(int key,int[] a)
{
return rank(key,a,0,a.length-1);
}
public static int rank(int key,int[]a,int lo,int hi)
{
if(lo>hi) return -1;
int mid=lo+(hi-lo)/2;
if (key<a[mid]) return rank(key,a,lo,mid-1);
else if (key>a[mid]) return rank(key,a,mid+1,hi);
else return mid;
}
public static void main(String[] args)
{
int[] whitelist=In.readInts(args[0]);
Arrays.sort(whitelist);
StdOut.println("WhiteList--------------");
for(int i=0;i<whitelist.length;i++)
StdOut.println(whitelist[i]);
StdOut.println("+not in whiteList,- in whiteList");
while (!StdIn.isEmpty())
{
int key=StdIn.readInt();
if (rank(key,whitelist)<0)
StdOut.println("+"+key);
else
StdOut.println("-"+key);
}
}
}
import java.util.Arrays;
public class Test
{
public static int rank(int key,int[] a)
{
return rank(key,a,0,a.length-1);
}
public static int rank(int key,int[]a,int lo,int hi)
{
if(lo>hi) return -1;
int mid=lo+(hi-lo)/2;
if (key<a[mid]) return rank(key,a,lo,mid-1);
else if (key>a[mid]) return rank(key,a,mid+1,hi);
else return mid;
}
public static void main(String[] args)
{
int[] whitelist=In.readInts(args[0]);
Arrays.sort(whitelist);
StdOut.println("WhiteList--------------");
for(int i=0;i<whitelist.length;i++)
StdOut.println(whitelist[i]);
StdOut.println("+not in whiteList,- in whiteList");
while (!StdIn.isEmpty())
{
int key=StdIn.readInt();
if (rank(key,whitelist)<0)
StdOut.println("+"+key);
else
StdOut.println("-"+key);
}
}
}