import java.util.*;
/*折中查找*/
class CollBinarySearch
{
public static void main(String[] args)
{
List<String> list=new ArrayList<String>();
list.add("addbbb");
list.add("addcbb");
list.add("cdddads");
list.add("baaadb");
sop(list);
Collections.sort(list);
sop(list);
int index=binarySearch(list,"cdddadsa");
sop(index);
}
public static int binarySearch(List<String> list,String key)
{
int min=0,max=list.size()-1,mid;
while(min<max)
{
//>>1就是/2
mid=(min+max)>>1;
//获取mid所对应的值,以便与key作比较
String str=list.get(mid);
//因为String本身具有比较性,所以直接用CompareTo方法
int num=key.compareTo(str);
if(num>0)
min=mid+1;
else if(num<0)
max=mid-1;
else
return mid;
}
return -min-1;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
【java编程】Collection工具类之重写BinarySearch方法
最新推荐文章于 2021-02-26 06:50:34 发布
本文介绍了一种基于Java实现的折中查找算法(binary search)。该算法通过使用ArrayList存储字符串,并利用Collections.sort()进行排序,进而实现了对有序列表的二分搜索。文章通过实例演示了如何查找指定元素的位置。
1万+

被折叠的 条评论
为什么被折叠?



