【发布时间】:2016-06-09 03:08:58
【问题描述】:
我编写了一个程序,它在字符串的排序数组中搜索字符串。我的程序工作正常,除了我的数组中有空字符串的时候。下面是代码:
public class StringSearch {
public static int binarySearchString(String[] s, String search)
{
int low = 0;
int high = s.length-1;
int mid;
while(low<=high)
{ mid = (high+low)/2;
if(search.compareTo(s[mid])<0)
high = mid-1;
else if(search.compareTo(s[mid])>0)
low = mid+1;
else
return mid;
}
return -1;
}
public static void main(String[] args)
{
String[] str = {"abc", "", "def", "ijk", "mnop", "xyz"};
String toSearch = new String("ijk");
int result = binarySearchString(str, toSearch);
if(result == -1)
System.out.println("String not found!!");
else
System.out.println("String found at array index:" + result);
}
}
我在哪里做错了?
【问题讨论】:
-
二进制搜索不适用于未排序的数组。
-
请解释一下“除了有空字符串的时候”是什么意思。怎么了?如果数组已排序,空字符串在哪里?你是如何对数组进行排序的?
-
从技术上讲,如果那里随机有一个空白字符串,则不会对其进行排序...
-
我错了..谢谢你们.. :)