黑马程序员技术交流社区
标题:
Collections类的相关问题
[打印本页]
作者:
思考。。。
时间:
2015-7-5 15:43
标题:
Collections类的相关问题
public static void binarySearchDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
Collections.sort(list,new StrLenComparator());
sop(list);
//int index = Collections.binarySearch(list,"aaaa");
int index = halfSearch(list,"aaa");
//int index = halfSearch2(list,"aaaa",new StrLenComparator());
sop("index="+index);
}
public static int halfSearch(List<String> list,String key)//二分法原理,获取集合某元素的脚标
{
int max,min,mid;
max = list.size()-1;
min = 0;
while(min<=max)
{
mid = (max+min)>>1;// /2;
String str = list.get(mid);
int num = str.compareTo(key);
if(num>0)
max = mid -1;
else if(num<0)
min = mid + 1;
else
return mid;
}
return -min-1;
}
复制代码
哪位大神能帮忙解释一下,当我要查询上面代码list集合下的元素aaa的脚标时,它是怎么用二分法halfSearch(List<String> list,String key)来实现的?对于上面的二分法halfSearch(List<String> list,String key)原理内容想不通,求解~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2