经典的二分查找//java
import java.util.Arrays;
public class BinarySearch
{
public static int rank(int key, int[] a) //a为序列,key为查找的键值
{
//a必须是有序数组
int lo=0;
int hi=a.length-1;
while(lo<=hi){
//若没有报错,则一定在a[lo..hi]中
int mid=lo+(hi-lo)/2;
if (key<a[mid]){ hi=mid-1;}
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.printIn(key);}
//即当输入的白名单文件中没有key时打印出来
}
}
}