Ich habe ein Programm geschrieben, das nach einem String in einem sortierten Array von Strings sucht. Mein Programm funktioniert gut außer für die Zeiten, wenn leere Strings in meinem Array sind. Unten ist der Code:Suche eine gegebene Zeichenfolge in einem sortierten Array von Strings in Java
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);
}
}
Wo mache ich einen Fehler?
Binäre Suche funktioniert nicht mit Arrays, die nicht sortiert sind. – MikeCAT
Bitte erläutern Sie, was Sie mit _ "außer den Zeiten, wenn es leere Zeichenfolgen gibt" _. Was geschieht? Wenn das Array sortiert ist, wo sind die leeren Zeichenfolgen? Wie hast du das Array sortiert? –
Techincalally wird nicht sortiert, wenn dort eine leere Schnur zufällig dort ist ... – 3kings