- import java.util.*;
- class CollectionsDemo3
- {
- public static void main(String[] args)
- {
- List<String> list=new ArrayList<String>();
- list.add("ag");
- list.add("sdf");
- list.add("cbadd");
- list.add("kk");
- list.add("bdkg");
- list.add("ag");
- Collections.sort(list);
- //int num = Collections.binarySearch(list,"sdf",new Comp());
- int num=halfSearch(list,"sdf");
- sop(list);
- sop(num);
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static int halfSearch(List<String> list,String key)//实现集合中的折半查找
- {
- int max,min,mid;
- max=list.size()-1;//集合中的最大角标
- min=0;//集合中的最小角标
-
- while(min<=max)//for( ;min<=max; )
- {
- mid=(max+min)/2;//中间角标
- String str=list.get(mid);//获取中间角标的元素
- int num=str.compareTo(key);//将中间角标的元素和关键字进行比较,返回一个整型值,大于0,中间角标大,小于0,key大。
- if(num>0)
- max=mid-1;
- else if(num<0)
- min=mid+1;
复制代码
|
|