D
Demoncwue
Gast
hallo an alle...
versuche seit längerem eine rekursive binaere suche zu realisieren...
allerdings ist in meinen code ein fehler. die while schleife wird leider nicht beendet. allerdings weiß ich nicht warum
ein weiteres problem ist die methode startsWith.. wenn ich einen textstring als schlüssel eintrage dann kommt es zu einem stackoverflow. es funktioniert nur wenn ich nach einem einzelnen buchstaben suche.
kann mir ijmd vlt helfen? das wäre prima...
anbei mein code:
versuche seit längerem eine rekursive binaere suche zu realisieren...
allerdings ist in meinen code ein fehler. die while schleife wird leider nicht beendet. allerdings weiß ich nicht warum
ein weiteres problem ist die methode startsWith.. wenn ich einen textstring als schlüssel eintrage dann kommt es zu einem stackoverflow. es funktioniert nur wenn ich nach einem einzelnen buchstaben suche.
kann mir ijmd vlt helfen? das wäre prima...
anbei mein code:
Code:
/*
* @author
* Version 2 26.11.08 um 16.45uhr
*/
public class bineareSuchetest {
public static int binSucheHilf(String[] liste,String schluessel,int oben,int unten){
int zahl;
int mitte = (oben-unten)/2;
while(unten < oben){
if(liste[mitte].startsWith(schluessel) == true){
System.out.println("Der Sucheintrag wurde an Stelle " + mitte + " gefunden.");
return mitte;
}
else{zahl = liste[mitte].compareTo(schluessel);}
if(zahl<0){binSucheHilf(liste,schluessel,mitte-1,unten);}
else{binSucheHilf(liste,schluessel,oben,mitte+1);}
// break;
}
return -1;
}
public static int binSuche(String[] liste, String schluessel){
int mitte = binSucheHilf(liste,schluessel,liste.length,0);
int key = mitte;
System.out.println("Der gesuchte eintrag ist an stelle" + key);
return key;
}
public static void main(String[] args){
String[] cdRegal = {"ACDC - Back in Black",
"ACDC - Black Ice",
"Air - Pocket Symphony",
"Beastie Boys - Hello Nasty",
"Lenny Kravitz - Let Love Rule",
"Massive Attack - Mezzanine",
"Oasis - Heathen Chemistry",
"ZZ-Top - Afterburner" };
String suchenach = "A";
System.out.println(binSuche(cdRegal,suchenach));
}
}