怎么样利用二分法查找数据中的字串JAVA?
今天工作中遇到数组中查找一个字串的问题,JAVA代码如下:
// 采用二分法对数据进行查找,如果找到则返回true,否则返回false;
// 采用二分法进行计算的数组,必须已经按升序排列
// list--待查询的数组
// name--待查找的字串
public static boolean isEnabled(List list, String name) {
int iIndex = 0; // 相当于指针的东西
int iStart = 0; //
int iEnd = list.size() - 1;
int iCount = 0;
while (true) {
iIndex = (iStart + iEnd) / 2;
if ((list.get(iIndex)).toString().toLowerCase().compareTo(
name.toLowerCase()) > 0) {
iEnd = iIndex;
} else if ((list.get(iIndex)).toString().toLowerCase().compareTo(
name.toLowerCase()) < 0) {
iStart = iIndex;
} else {
break;
}
/**
* System.out.println("iCount is "+iCount);
* System.out.println("比较值:"+(list.get(iIndex)).toString().toLowerCase());
* System.out.println("待比较值:"+name.toLowerCase());
* System.out.println("比较结果:"+(list.get(iIndex)).toString().toLowerCase().compareTo(name.toLowerCase()));
*/
iCount++;
// 防止找不到时,出现死循环,即使没有相应的值存在,也只比较数组的长度的次数
if (iCount > list.size())
return false;
}
return true;
}
本文地址:http://www.45fan.com/bcdm/70328.html