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)
{ //如果key存在a[]中,他的索引不会小于lo且不会大于hi
if(lo > hi) return - 1;
int mid = lo + (hi - lo) / 2;
if (key < a[mid]) return rank(key, a, lo, mid);
else if(k > a[mid]) return rank(key, a, mid, hi);
else return mid;
二分查找
import java.until.Arrays;
public class BinarySearch
{
public static int rank(int key, int[] a)
{//数组必须是有序的
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;
}
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.println(key);
}
}
}
二分查找
最新推荐文章于 2024-07-19 15:45:46 发布