黑马程序员技术交流社区
标题:
自定义的一个集合中折半查找方法,为什么和预期结果不同
[打印本页]
作者:
anywayDo
时间:
2015-5-4 21:48
标题:
自定义的一个集合中折半查找方法,为什么和预期结果不同
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;
复制代码
作者:
支离疏者
时间:
2015-5-4 21:52
你是不是没复制完整?
作者:
yelebron
时间:
2015-5-4 21:56
看不懂啊!!!!!!!!!!!!!!!!!
作者:
anywayDo
时间:
2015-5-4 22:01
支离疏者 发表于 2015-5-4 21:52
你是不是没复制完整?
谢谢提醒哈。。后面竟然没有粘贴上。。后面代码补上:
if(num>0)
max=mid-1;
else if(num<0)
min=mid+1;
return mid;
}
return -1;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2