首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于减半查找的疑问

2012-10-15 
关于折半查找的疑问[codeC/C++][/code]//折半查找的两种方法class HalfSearchDemo{public static void ma

关于折半查找的疑问
[code=C/C++][/code]//折半查找的两种方法
class HalfSearchDemo
{
public static void main (String [] args)
{
String aa = "abcdefhi";
int index = halfSearch(aa,'i');//我什么我字符串里的前面的每个字符都能查找到而最后一个'i'却不能?
System.out.println(index);
}
public static int halfSearch(String aa,char key)
{
int max=aa.length()-1;
int min = 0;
int mid = (max+min)>>1;
while (aa.charAt(mid)!=key)
{
int num = new Character (key).compareTo(new Character (aa.charAt(mid)));
if(num>0) 
min = (mid+1);

else if(num<0)
max=(mid-1);

mid = (max+mid)>>1;

if (min>max)
return -1;
}
return mid;
}
}
//第二种方法
//class HalfSearchDemo
//{
//public static void main (String [] arga)
//{
//String aa = "abcdefhik";
//int num = halfSearch(aa,'k');
//System.out.println (num);
//}
//public static int halfSearch (String aa , char key)
//{
//int max = aa.length()-1;
//int min = 0;
//int mid;
//while (min<=max)//等于的原因是长度是一呢?
//{
//mid = (min+max)>>1;
//int num = new Character (key).compareTo(new Character (aa.charAt(mid)));
//if (num>0)
//min = mid+1;
//else if (num<0)
//
//max = mid-1;
//else 
//return mid;
//
//
//}
//return -1;
//}
//}
我的问题是aa字符串唯独最后一个查找不出来,求解

[解决办法]
//我什么我字符串里的前面的每个字符都能查找到而最后一个'i'却不能?
循环中的这句话应该写错了吧?
mid = (max+mid)>>1;
是否应为:
mid = (max+min)>>1;


热点排行